{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fit a function to a non-linear pattern"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This example can be referenced by [citing the package](https://neuropsychology.github.io/NeuroKit/cite_us.html).\n",
    "\n",
    "This small tutorial will show you how to use Python to estimate the best fitting line to some data. This can be used to find the optimal line passing through a signal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load NeuroKit and other useful packages\n",
    "import neurokit2 as nk\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import scipy.optimize\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "remove-input"
    ]
   },
   "outputs": [],
   "source": [
    "# Note: this cell is hidden using the \"remove-input\" tag\n",
    "# Make bigger images\n",
    "plt.rcParams['figure.figsize'] = [15, 5]  \n",
    "plt.rcParams['font.size']= 14"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fit a linear function"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will start by generating some random data on a scale from 0 to 10 (the x-axis), and then pass them through a function to create its y values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.random.uniform(0., 10., size=100)\n",
    "y = 3. * x + 2. + np.random.normal(0., 10., 100)\n",
    "plt.plot(x, y, '.')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case we **know** that the best fitting line will be a linear function (i.e., a straight line), and we want to find its parameters. A linear function has two parameters, the **intercept** and the **slope**.\n",
    "\n",
    "First, we need to create this function, that takes some **x** values, the parameters, and return the **y** value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def function_linear(x, intercept, slope):\n",
    "    y =  intercept + slope * x\n",
    "    return y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, using the power of **scipy**, we can optimize this function based on our data to find the parameters that minimize the least square error. It just needs the function and the data's x and y values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1.00957673, 3.22047852])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params, covariance = scipy.optimize.curve_fit(function_linear, x, y)\n",
    "params"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So the optimal parameters (in our case, the **intercept** and the **slope**) are returned in the **params** object. We can unpack these parameters (using the star symbol \\*) into our linear function to use them, and create the predicted **y** values to our **x** axis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit = function_linear(x, *params)\n",
    "\n",
    "plt.plot(x, y, '.')\n",
    "plt.plot(x, fit, '-')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Non-linear curves"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also use that to approximate non-linear curves."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAAFFCAYAAACtwg/gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABFJ0lEQVR4nO3dd5icdb3//9d7ys7M9k22pW8KaUAIkEBCL1IUUY+IYuGIDT0cFPWLqBwL4jmi/hTlHBt4BDwWsAuIgEgLJZQktAABQiqbsrvJttndmZ3y+f0xs5tN3+zu7OzMPB/XdV8zc5eZ94abzbzyaeacEwAAAABg7PNkuwAAAAAAwOAQ4AAAAAAgRxDgAAAAACBHEOAAAAAAIEcQ4AAAAAAgRxDgAAAAACBH+LJdwJ6qq6tdQ0NDtssAAAAAgKxYuXJli3OuZl/HxlyAa2ho0IoVK7JdBgAAAABkhZlt3N8xulACAAAAQI4gwAEAAABAjiDAAQAAAECOIMABAAAAQI44aIAzsy+b2TNm1mFmzWZ2l5kdMYjrjjSzR8ysx8wazexrZmYjUzYAAAAAFJ7BzEJ5mqSfSHpGkkm6VtI/zWy+c27nvi4ws3JJ90taJmmxpLmSbpHUJen7wy8bAAAAwEjq6OhQU1OTYrFYtkvJeyUlJZo8ebI8nkPvEHnQAOecO2fgazO7WFK7pBMl3bWfyz4oqVjSh51zPZJWm9lcSZ83s+udc+6QKwUAAACQER0dHdq+fbsmTZqkUCgkOs5lTjKZVGNjo1paWlRbW3vI1w9lDFxZ+rrWA5yzVNKj6fDW5z5JEyU1DOEzAQAAAGRIU1OTJk2apOLiYsJbhnk8HtXV1am9vX1o1w/hmhskPSdp+QHOqZe0fY992wccAwAAADBGxGIxhUKhbJdRMPx+v+Lx+JCuHcwYuH5mdr2kkySd5JxLDOkT9/2+l0q6VJKmTp06Um+LQ7C2KazVje3yeU1vO2KCPB7+5QUAAKCQ0PI2eobzZz3oAGdmP5B0kaTTnXPrDnL6Nkl1e+yrG3BsN865myTdJEmLFi1ifNwoSySdPvS/T2lbR0SSdMNFTu9cOCnLVQEAAADY06C6UJrZDZLeL+kM59yaQVyyXNLJZhYcsO8sSVskbTjUIpFZz2zYqW0dEX3znYdrbn2ZbnjgdSWS5GgAAADkttNOO02XX375qH/urbfeqtLS0oy892DWgfuxpI9I+oCkVjOrT2+lA865zsweGHDZbyV1S7rVzI4ws3dL+pIkZqAcg+5+YauCfo/efcxkXXHmYVrX3KW7nt+S7bIAAACAA2pubtZll12mhoYGBQIB1dXV6cwzz9T9998vSfrzn/+s6667LstVjqzBdKG8LP34wB77vyHpmvTzCZJm9h1wzrWb2VmSfixphVIzVn5f0vXDKRYjL5F0umf1Vp05t04lAZ/OObxes+tKdcsTG/Suo+lGCQAAgLHrggsuUHd3t37xi19o1qxZampq0iOPPKIdO3ZIksaNG5flCkfeQVvgnHO2n+2aAedc4pxr2OO6F51zpzjngs65Cc65b9D6NvY8vX6nWsK9Om/BBEmSx2M6f8FEPb+5TdvTY+IAAACAsaatrU2PPvqovv3tb+vMM8/UtGnTtHjxYl155ZW66KKLJO3dhXL79u16xzveoVAopGnTpumWW27REUccoWuuuab/HDPTTTfdpAsvvFAlJSWaMWOGfv3rX+/22V/60pc0Z84chUIhNTQ06KqrrlIkMjrfnYeyjADyyAtvtkmSTpxZ3b/vrMNT88088EpTNkoCAAAADqq0tFSlpaW68847Bx2ePvzhD2vjxo168MEHdccdd+jXv/61Nm7cuNd51157rd75znfq+eef1/ve9z599KMf1aZNm/qPl5SU6Oabb9Yrr7yin/zkJ7r99tv1X//1XyP2sx3IIS0jgPyzvqVL1aVFqij29++bU1emKeNCuv/lbfrA8SzrAAAAUGi+cddLenlLx6h+5vyJ5fr6+YcP+nyfz6dbb71Vn/jEJ3TTTTfp6KOP1oknnqgLL7xQxx9//F7nv/rqq7rvvvu0fPlyLVmyRFJqspGGhoa9zr344ov1oQ99SJL0zW9+UzfccIOWLVvWv++rX/1q/7kNDQ26+uqr9b3vfU/f/OY3D+VHHhJa4ArcuuYuTa8u2W2fmemsefV6/I0d6ooObYFBAAAAINMuuOACbdmyRXfddZfe+ta36oknntCSJUv0rW99a69z16xZI4/Ho0WLFvXvmzJliiZOnLjXuQsWLOh/7vP5VFNTo6amXb3T/vjHP+qkk05SfX29SktL9bnPfW63FrpMogWuwK1r6dKZc2v32v+WebW6+fH1Wv7GDr1l/p5L+gEAACCfHUpLWLYFg0GdddZZOuuss/S1r31NH//4x3XNNdfoyiuvHPJ7+v3+3V6bmZLJpCTpySef1EUXXaSvf/3r+sEPfqDKykrdeeedw/q8Q0ELXAHriMTUEo5qek3JXseOmValIq9HT63fkYXKAAAAgKGZP3++4vH4XuPi5s6dq2QyqZUrV/bve/PNN7Vly6Etn/X4449r0qRJ+upXv6rFixfrsMMO2+c4ukyhBa6ArWvukiTNqN47wAX9Xi2cUqmn1u8c7bIAAACAg9qxY4cuvPBCffSjH9WCBQtUVlamFStW6Lvf/a7OPPNMlZeX73b+nDlzdM455+hTn/qUfvrTnyoYDOoLX/iCiouLZWaD/tzZs2ersbFRv/nNb7R06VLdd999uu2220b6x9svWuAK2PqWsCRpRs2+V4k/fsY4rW5sV0ckNpplAQAAAAdVWlqqJUuW6IYbbtCpp56qww8/XFdffbU+8IEP6He/+90+r7n11ls1efJknXbaaXrHO96hD37wg6qtrVUwGBz0555//vn6whe+oM9+9rNasGCB7r//fl177bUj9WMdlI21pdkWLVrkVqxYke0yCsL3//GqfvLwG3rl2nNV5Ns7yz++tkUf/N+ndMsli3X6PsbJAQAAID+88sormjdvXrbLGHUtLS2aOHGibrvtNl1wwQWj+tkH+jM3s5XOuUX7OkYXygK2rqVLU6pC+wxvknTM1Cr5vaYn1+8gwAEAACDnPfjgg+rs7NSRRx6ppqYm/cd//Ieqq6t17rnnZru0QSPAFbB9LSEwUKjIqwWTK/XUOsbBAQAAIPfFYjF95Stf0bp161RcXKwlS5Zo2bJlKinZ/3fisYYAV8C2tPVocUPVAc85fvo43bhsnbqicZUEuF0AAACQu8455xydc8452S5jWJjEpEBF4wm198RUWxY44HnHzxivRNJp5cbWUaoMAAAAwP4Q4ApUS7hXklRdeuAAd+y0Knk9xnpwAAAAeW6sTW6Yz4bzZ02AK1DNnVFJUs1BWuBKAz4dMamCcXAAAAB5zO/3q6enJ9tlFIxYLCafb2jDkwhwBWqwAU6SlswYp+ffbFNPbyLTZQEAACALamtr1djYqO7ublriMiyZTGr79u2qqKgY0vXMSlGgDinATR+vGx9Zp2c3teqEWdWZLg0AAACjrLy8XJK0ZcsWxWKxLFeT/0pKSlRdPbTv1QS4AtUX4MaXHDzAHdtQJTPp6Q07CXAAAAB5qry8vD/IYeyiC2WBaglHVVXs3+8i3gOVB/2aP6FcT69nHBwAAACQTQS4AtXcGR1U98k+ixvGadWmVvXGkxmsCgAAAMCBEOAKVHM4etAlBAY6fvo4RWJJrd7SnsGqAAAAABwIAa5AHXIL3PRxkkQ3SgAAACCLCHAFyDmXCnCH0AJXXRrQjJoSAhwAAACQRQS4AtTVm1BPLHFILXBSqhvlMxt2KpFkbRAAAAAgGwhwBehQ1oAb6Ljp49QZievVbZ2ZKAsAAADAQRDgCtBQA9zihr5xcDtGvCYAAAAAB0eAK0At4VSAO5RZKCVpclWxJlWG9MyG1kyUBQAAAOAgCHAFaKgBTkp1o3xq/U45xzg4AAAAYLQR4ApQW3dMklRZ7D/kaxc3jFNLOKoNO7pHuiwAAAAAB0GAK0Bt3TGVFHnl9x76f/7jpjMODgAAAMgWAlwBau+JqbK4aEjXzqwp0fiSIj3FenAAAADAqCPAFaD2nl6Vhw69+6QkmZkWN6TWgwMAAAAwughwBai9J6bKIQY4KdWNcvPOHm1p6xnBqgAAAAAcDAGuALV1x1QxzAAniVY4AAAAYJQR4ApQagzc0APcvAnlKgv49DTj4AAAAIBRRYArMM45tfUMrwXO6zEd21DFRCYAAADAKBtUgDOzU8zsTjNrNDNnZpcM4ppzzGy5mXWaWYuZ3WFms4ddMYYlEkuqN55UxTBa4CRp6YzxWtsUVlNHZIQqAwAAAHAwg22BK5W0WtIVkg46c4WZTZd0h6RHJR0t6S2SQpL+PrQyMVLae1KLeA+nBU6STpxVLUl6/I2WYdcEAAAAYHAGFeCcc393zl3tnPujpOQgLjlWkl/Sl51za51zz0m6TtJMM6secrUYtraeXklSZWho68D1mT+hXFXFfj2+lgW9AQAAgNGSqTFwz0iKSfq4mXnNrEzShyU945yjySaL2rtHpgXO4zGdMLNaj69tkXNuJEoDAAAAcBAZCXDOuY2SzpL0DUlRSe2SjpT09n2db2aXmtkKM1vR3NyciZKQ1pbuQjmcWSj7nDBrvLa2R7SupWvY7wUAAADg4DIS4MysXtIvJP2fpMWSTpPUKen3ZrbXZzrnbnLOLXLOLaqpqclESUgbqTFwknRSehzcE2tpVAUAAABGQ6a6UP67pC7n3FXOuWedc8skfUjSqZJOyNBnYhD6u1COQAvc1HHFmlQZ0mMEOAAAAGBUZCrAFUtK7LGv7zVrz2VRW0+vvB5TWcA37PcyM500q1rL39ihRJJxcAAAAECmDXYduFIzW2hmC9PXTE2/npo+fp2ZPTDgkrslHWNmXzOzw8zsGEm3SNosaeXI/gg4FO09MZUHfTKzEXm/E2aNV0ckrtWN7SPyfgAAAAD2b7CtYYskPZveQkpNTvKspGvTxydImtl3snPuQUkfkPTO9Hn3KTUr5bnOOWa8yKK27pgqi4e3hMBAJ8xkPTgAAABgtAyqH51z7mFJ+22ycc5dso99t0u6faiFITPae2IqH4EJTPrUlAU0t75Mj69t0WWnzRqx9wUAAACwN8ajFZj2npgqRzDASanZKJ/Z0Kru3viIvi8AAACA3RHgCkx7T2xElhAY6LQ5teqNJ7X8jR0j+r4AAAAAdkeAKzBt3SMf4BZPr1JxkVcPvdo0ou8LAAAAYHcEuALinFM4Gld5aPhLCAwU8Hl14qxqPbSmWc6xnAAAAACQKQS4AhKJJZVIOpUGRrYFTpJOn1OrxrYerW0Kj/h7AwAAAEghwBWQzmhMklQa8I74e582p0aS6EYJAAAAZBABroCEI6lZIkuDI9uFUpImVoY0t75MD61pHvH3BgAAAJBCgCsg4Wg6wGWgC6WUmo3ymQ071RmJZeT9AQAAgEJHgCsg/S1wgZFvgZOkM+bWKp50enxtS0beHwAAACh0BLgC0tcCV5aBLpSSdMzUSpUFfXSjBAAAADKEAFdAdnWhzEyA83k9OmV2jR56tUnJJMsJAAAAACONAFdA+gNchlrgJOkt82rV1BnV82+2ZewzAAAAgEJFgCsgnRkeAydJZ8ytk99ruvelbRn7DAAAAKBQEeAKSDgal99rCvgy95+9IuTXCTOrde/qbXKObpQAAADASCLAFZBwJK7SgE9mltHPOfeIem3c0a012zoz+jkAAABAoSHAFZBwNJ7R8W99zppfJzPp3tV0owQAAABGEgGugHRG4iopynyAqy4NaHHDON3HODgAAABgRBHgCkg4GsvYGnB7Ovfweq3Z1qn1LV2j8nkAAABAISDAFZBwNJ7RGSgHOueIekmiFQ4AAAAYQQS4AhKOxFUa9I/KZ02qDGnB5ArGwQEAAAAjiABXQMLRxKi1wEmp2Sif29ymzTu7R+0zAQAAgHxGgCsgozkGTpLecdRESdKdz28Ztc8EAAAA8hkBrkDEEklFYslRbYGbXFWs4xrG6c+r3mRRbwAAAGAEEOAKRFc0LkmjGuAk6V1HT9IbzV16aUvHqH4uAAAAkI8IcAWiM5IOcKPYhVKSzjtygoq8Hv312cZR/VwAAAAgHxHgCkQ43QJXNsotcBXFfp02p0Z3PL9FiSTdKAEAAIDhIMAViL4AN9otcJL0L0dPUnNnVE+80TLqnw0AAADkEwJcgQinu1CWjHILnCSdPrdWZUGf/kI3SgAAAGBYCHAFojNLXSglKej36m1HTNB9q7epuzc+6p8PAAAA5AsCXIEIZ2kSkz7vWTRZXb0J/e35rVn5fAAAACAfEOAKRDgakzT6ywj0WTStSrNqS/Xbpzdl5fMBAACAfECAKxDhaEKSVFKUnQBnZnr/cVP13OY2vcyacAAAAMCQEOAKRDgSV2nAJ4/HslbDBcdMUpHPo9ufoRUOAAAAGAoCXIEIR2NZ6z7Zp7K4SOcdOUF/WdWont5EVmsBAAAActGgApyZnWJmd5pZo5k5M7tkENeYmX3WzNaYWdTMtprZt4ddMYYkHI1nbQKTgd5/3FR1RuP62wtbsl0KAAAAkHMG2wJXKmm1pCsk9Qzymu9LukzSFyXNk/Q2ScsOtUCMjM50F8psW9xQpZk1JbqNyUwAAACAQzaoAOec+7tz7mrn3B8lJQ92vpnNkfRpSe90zt3hnFvnnHvWOff3YdaLIQpH4yobAy1wfZOZrNrUptWN7dkuBwAAAMgpmRoD905J6ySda2brzGyDmf3SzGoz9Hk4iPAYaYGTpAsXTVFxkVe3PL4h26UAAAAAOSVTAW6GpGmSLpJ0iaSLJc2VdJeZ7fWZZnapma0wsxXNzc0ZKqmwhaNxlYyRAFcR8uvCYyfrrue3qKkzku1yAAAAgJyRqQDnkRSQdLFzbplz7lGlQtxxkhbvebJz7ibn3CLn3KKampoMlVTYxlILnCRdcuJ09SaS+vWTjIUDAAAABitTAW6rpLhz7rUB+16XlJA0NUOfif1IJp3CvWNjDFyf6dUlOnNurX7z5EZFYiwpAAAAAAxGpgLc45J8ZjZzwL4ZkrySNmboM7Ef3bGEnNOYaoGTpI+dNF07unp15/MsKQAAAAAMxmDXgSs1s4VmtjB9zdT066np49eZ2QMDLvmnpFWSbjazo83saEk3S3pK0ooR/QlwUF3RuCSNiXXgBlo6c7zm1pfp5sfWyzmX7XIAAACAMW+wLXCLJD2b3kKSvpF+fm36+ARJ/a1tzrmkpLdLalJq7bf7JL2p1LICB12GACOrM5IOcGOsBc7M9NGTpmvNtk4te70l2+UAAAAAY96gvtE75x6WZAc4fsk+9m2VdOFQC8PICadb4MbSGLg+71o4ST+4/zX9+KG1OnU2E9gAAAAAB5KpMXAYQ8L9LXD+LFeytyKfR584eYaeXr9Tz2zYme1yAAAAgDGNAFcAwtGYpLHXhbLPRcdN0biSIv34obXZLgUAAAAY0whwBaBvDNxY7EIpScVFPn30xAY9/GqzVje2Z7scAAAAYMwiwBWAvjFwY7UFTpIuXtqgsoBPP3mYVjgAAABgfwhwBaBvDFzJGA5wFSG/Ll46Tfes3qa1TZ3ZLgcAAAAYkwhwBSAcjavI51GRb2z/5/7YSdMV8nv1w3++nu1SAAAAgDFpbH+jx4jojMZVNoZb3/qMLw3okhMa9LcXtmrNto5slwMAAACMOQS4AhCOxFU6Ricw2dOlp8xQWcCnH9z/WrZLAQAAAMYcAlwB6IrGx/QEJgNVFhfpoydN130vbWdGSgAAAGAPBLgC0JlDAU6SPnbydFWE/LqeVjgAAABgNwS4AhCOxMfsGnD7Uh7069JTZujBNU1aubE12+UAAAAAYwYBrgCEc6wFTpIuOaFB1aUBffueV+Scy3Y5AAAAwJhAgCsA4WjuTGLSpyTg02ffcpie2dCq+1/enu1yAAAAgDGBAFcAwpG4SgP+bJdxyN63eIpm1JToO/euUTyRzHY5AAAAQNYR4PJcNJ5QbyKZU2Pg+vi9Hn3x3Ll6o7lLv1/xZrbLAQAAALKOAJfnwpG4JKmkyJvlSobm7Pl1WjStSj/452vqisazXQ4AAACQVQS4PBdOh57SYO51oZQkM9OX3zZPzZ1R/e+j67NdDgAAAJBVBLg815lugcu1WSgHOnZald56RL1uXPaGmjuj2S4HAAAAyBoCXJ7r63aYi2PgBvrCOXPUG0/qhgdY3BsAAACFiwCX5/q7UOZwC5wkzagp1QePn6rbnt6sNds6sl0OAAAAkBUEuDy3awxcbgc4SfrcWbNVFvTpG3e+zOLeAAAAKEgEuDzXNwauLMdb4CSpsrhI/+/sOVq+bofuWb0t2+UAAAAAo44Al+fyqQVOkj5w3FTNm1Cu/7r7FfX0JrJdDgAAADCqCHB5LhyJy2NSyJ+b68DtyesxXXP+fDW29einj7yR7XIAAACAUUWAy3PhaFylAZ/MLNuljJjjZ4zX+UdN1M8eeUMbWrqyXQ4AAAAwaghwea4zEldZji7ifSBfOW+eAl6PvvLX1UxoAgAAgIJBgMtz4WhMJYH86D45UF15UFedO0ePrW3RHc9tyXY5AAAAwKggwOW5vi6U+egDx0/TwimV+s+7X1Zbd2+2ywEAAAAyjgCX58KRuErzsAullJrQ5Fv/cqRau2P69j1rsl0OAAAAkHEEuDwXjsbzYg24/Zk/sVwfP2m6bn9msx57vSXb5QAAAAAZRYDLc/nchbLP586arRk1Jfrin15QZySW7XIAAACAjCHA5blUF8r8DnBBv1ffu/AobW3v0bf+/kq2ywEAAAAyhgCXxxJJp67eRN63wEnSMVOr9IlTZui2pzdr2WvN2S4HAAAAyAgCXB7r6o1LksryvAWuz+feMluzakv1xT+9wKyUAAAAyEuDCnBmdoqZ3WlmjWbmzOySwX6AmR1mZp1mFh5ylRiScCQV4AqhBU5KdaW8/r1HqSUc1VV/fIEFvgEAAJB3BtsCVypptaQrJPUM9s3NrEjS7ZKWHXppGK5wNB3gCqQFTpIWTK7UVefM1T9e3q5fP7kx2+UAAAAAI2pQAc4593fn3NXOuT9KSh7C+39H0guS/jCU4jA8nQXWAtfnYydN12lzavTNu1/Ry1s6sl0OAAAAMGIyNgbOzM6T9HZJn87UZ+DA+lvgCizAeTym7114lCpCfn36tlX9fw4AAABArstIgDOziZJ+LulDzjnGvmVJ/xi4AupC2ae6NKAbLlqo9S1duvL3zzMeDgAAAHkhUy1wv5L0U+fcU4M52cwuNbMVZraiuZkp4EdKOJpa1LrQWuD6nDCzWle/bZ7ufWmbfvzQ2myXAwAAAAxbpgLcGZK+bmZxM4tL+oWkkvTrS/c82Tl3k3NukXNuUU1NTYZKKjzhaEKSVBbwZ7mS7PnYSdP1roUT9f37X9ODa7ZnuxwAAABgWDIV4I6UtHDA9jWlZq9cKCY0GTV9XShLAt4sV5I9ZqZvX7BAh08s1xW3PafXtndmuyQAAABgyAa7DlypmS00s4Xpa6amX09NH7/OzB7oO985t3rgJqlRUjL9ujUDPwf2oSMSU8jvlc9b2Ou1B/1e3XjxIoWKvLrk5qe1vSOS7ZIAAACAIRnsN/tFkp5NbyFJ30g/vzZ9fIKkmSNeHYalMxJTeagwx7/taVJlSDdfslhtPTF95JZnmJkSAAAAOWmw68A97JyzfWyXpI9f4pxrOMD1tzrnSkemZAxWZySusmDhjn/b0xGTKvTjDx6jV7d36rLfrFIscShLGgIAAADZV9h96/JcKsDRAjfQ6XNq9V/vOkLLXmvW53//vBJJlhcAAABA7uDbfR7rjMRUWVyU7TLGnIuOm6q2npi+fc8alRR5dd27j5SZZbssAAAA4KAIcHmsIxLXlHHF2S5jTPrUqTPVFY3rfx5cq5KAT185bx4hDgAAAGMeAS6PdUZijIE7gM+fNVvhaFy/eGy9PCZd/TZCHAAAAMY2Alwe64jEVc4YuP0yM33t7fPlnPTzR9crGk/qmvMPl8dDiAMAAMDYxLf7PBWJJdQbT6o8RAvcgZiZvn7+fBX5PLpp2Tr1xpP61r8cSYgDAADAmESAy1OdkdQ6Z8xCeXBmpi+/da6KvB796KG16o0n9d33LCj4BdABAAAw9vDtPk91RmKSCHCDZWa68pw5KvJ5dP39rykaT+r69x2lgM+b7dIAAACAfny7z1P9LXABulAeis+ceZhCfq/+6++vaGdXr27812NVzkQwAAAAGCPoI5an+gIcY+AO3SdOmaHr33uUntmwU++78Uk1dUSyXRIAAAAgiQCXtzroQjks7z5msn5xyWJt3NGld//0Ca1rDme7JAAAAIAAl68YAzd8p86u0e2XLlFPb0Lv+dlyrdzYmu2SAAAAUOAIcHmKLpQjY8HkSv3p305QedCn99/0pP76bGO2SwIAAEABI8DlqY5IXGZSaREtcMPVUF2iv1x2oo6ZVqnP/u45fe++V5VMumyXBQAAgAJEgMtTHT0xlRb5WJB6hFSVFOn/Pnq8Llo8RT96aK0u+80qdffGs10WAAAACgwBLk91RuKMfxthRT6Prnv3kfrKefP0j5e36b03Lte2dmaoBAAAwOghwOWpzkiM8W8ZYGb6+Mkz9L8fXqQNLd16x48e07ObmNwEAAAAo4MAl6dogcusM+bW6U//doICfo/ed+OT+u1Tm+Qc4+IAAACQWQS4PNURiaksSAtcJs2pL9Ndl5+kpTPH6+q/vKir/viCIrFEtssCAABAHiPA5Sla4EZHZXGRbr5ksT5zxiz9YeWbes/PntDmnd3ZLgsAAAB5igCXpzojMZXTAjcqvB7T58+eo//910XauKNb5//oMS17rTnbZQEAACAPEeDykHOOFrgseMv8Ot11+UmqLw/qw7c8rRv++boSrBcHAACAEUSAy0M9sYTiSccYuCxoqC7Rny87Qe9aOEk/+OdruvgXT6mpg6UGAAAAMDIIcHmorTsmSaoqJsBlQ3GRT9e/9yh99z0L9OymNr31hkfpUgkAAIARQYDLQ63dvZKkSgJc1piZ3rtoiu68/ERVlwb0rzc/re/eu0bxRDLbpQEAACCHEeDyUHu6Ba6yuCjLleCwujL99d9P1PuPm6KfPPyGLrrpSTW29WS7LAAAAOQoAlweau3vQkmAGwtCRV5d9+4F+u/3H6012zp17g+X6Y7nGrNdFgAAAHIQAS4PtfXQhXIsesdRE/X3z5ys2XVluuL25/Tp257tby0FAAAABoMAl4f6JjGpCBHgxpqp44v1u0uX6MqzZ+ueF7fqnB8u02Ovt2S7LAAAAOQIAlweauvuVcjvVdDvzXYp2Aef16PLzzhMf7nsRJUEvPrQL57SN+56SZFYItulAQAAYIwjwOWh1u4YSwjkgCMnV+hvnz5ZH146Tbc8vkHn/fejWrlxZ7bLAgAAwBhGgMtDbd29qmACk5wQKvLqG+88Qv/30eMUiSX1np8t1zV3vqSuaDzbpQEAAGAMIsDloTZa4HLOKbNrdN/nTtGHlzbol8s36OwfLGPxbwAAAOyFAJeHWrt7mYEyB5UGfLrmHYfrD59cqqDfo3+9+Wld+Yfn1ZZemB0AAAAgwOWh9p4Yi3jnsEUN43T3Z07W5afP0l+fbdSZ339Ev39ms5JJl+3SAAAAkGWDCnBmdoqZ3WlmjWbmzOySg5x/mpndYWZbzazbzF4ws4+OSMU4IOccXSjzQNDv1ZXnzNGdl5+k6dUluupPL+iCnz2hF99sz3ZpAAAAyKLBtsCVSlot6QpJPYM4/wRJL0p6j6QjJP1U0k1m9oGhFInBC0fjiiedKkO0wOWD+RPL9YdPLdX3LzxKm3f26B0/fkz/8ZcX1dpFt0oAAIBC5BvMSc65v0v6uySZ2a2DOP9be+z6qZmdLukCSb89xBpxCPoW8WYMXP4wM11w7GSddXidfnj/6/rl8g26+8WtuvLsObpo8RT5vPSEBgAAKBSj+c2vXFLrKH5eQdoV4GiByzflQb++dv58/f0zJ2tOXZm+8tfVOueHy3TfS9vkHOPjAAAACsGoBDgze7ukMyXdtJ/jl5rZCjNb0dzM1OnD0ZqesZAxcPlrTn2Zbr90iW66+Fg5SZ/81Upd+LPlLAIOAABQADIe4MzsRKW6TX7GOff0vs5xzt3knFvknFtUU1OT6ZLyWlsPXSgLgZnp7MPr9Y/PnqJv/cuR2rizWxf8dLk++asVeqM5nO3yAAAAkCEZDXBmdpKkeyR9zTn300x+FlL61gyjC2Vh8Hk9+sDxU/XIF07T/ztrth57vUVnXf+IPve75whyAAAAeWhQk5gMhZmdIuluSV93zv0wU5+D3fWNgasI0QJXSIqLfPr0mYfp/cdP1Y2PvKFfP7lJdzzXqPOPmqhPnzFLs2rLsl0iAAAARsCgApyZlUqalX7pkTTVzBZK2umc22Rm10k6zjl3Zvr805QKbz+R9Fszq09fm3DOMcgtg3Z29aos4JOfmQkLUnVpQP9x3nx98tSZ+vmj6/Sr5Rt15/NbdM78en385Ok6dlqVzCzbZQIAAGCIBvstf5GkZ9NbSNI30s+vTR+fIGnmgPMvkVQs6UpJWwdszwy7YhxQcziqmrJAtstAllWXBvTlt87TY188Q5edNlPL1+3Qe362XO/68eO647lGxRLJbJcIAACAIbCxNv34okWL3IoVK7JdRs5678+Wy0z63SeXZrsUjCHdvXH9aVWjbnlsvda1dKm+PKj3HDtZFxw7WdOrS7JdHgAAAAYws5XOuUX7OpaxMXDIjuZwVIdPLM92GRhjiot8unjJNH3wuKl6+LUm/d/yjfrJw2v1o4fWatG0Kr3n2Ml624IJKg8ydhIAAGAsI8DlmaaOiE6fU5vtMjBGeTymM+bW6Yy5ddreEdFfnm3UH1Zs1pf+/KK+esdqLZkxXmfPr9MZ8+o0qTKU7XIBAACwBwJcHumKxtXVm1BtOWPgcHB15UF96tSZ+uQpM/T8m+2658Wtuv/l7frqHS/pq3e8pGnji3XCzPFaOrNaS2eMZ2wlAADAGECAyyPNnVFJUk0pX7QxeGamhVMqtXBKpb78tnla2xTWo68364k3duhvL2zVbU9vliQdVluqE2aO18mH1WjJzPEqDfDrAwAAYLTxDSyPNKUDHC1wGI5ZtaWaVVuqj5w4XYmk00tb2vXEGzv0+NoW/W7FZv1y+Ub5PKZjplbp5MOqddbhdZpTV8byBAAAAKOAAJdH+lvg6OqGEeL1mBZMrtSCyZX61KkzFYkltGpjq5a93qJHX2/W9+9/Td+//zXNqi3V2xdM0AXHTNaUccXZLhsAACBvEeDySFNnRJJUWxbMciXIV0G/VyfMqtYJs6r1pbfOVVNnRPet3qa/vbBVNzzwum544HWdMadWFy+dplMOq5HHQ6scAADASCLA5ZHmzqj8XlNliKngMTpqy4K6eGmDLl7aoK3tPbrtqU367dOb9MAtTZpTV6ZPnzlLbztiAkEOAABghHiyXQBGTlNnVNWlAb4sIysmVIT0+bPn6PEvnaHr33uU4smkLv/tszrnh8t0x3ONSiRdtksEAADIeQS4PNLUGVUt49+QZQGfV+8+ZrL+8blT9T/vP1pm0hW3P6ezf/AIQQ4AAGCYCHB5pLkzygQmGDO8HtP5R03UvVecop988Bj5PB5dcftzOveHy3T3C1uVJMgBAAAcMgJcHmnujKiGCUwwxng8prcdOUH3XHGyfvSBo+Uk/ftvV+lt//2o7l1NkAMAADgUBLg8EU8ktaOrly6UGLM8HtPbF0zUfZ89RTdctFC98aQ+9etVevv/PKY7nmtUbzyZ7RIBAADGPAJcnmjqjMo5FvHG2Of1mN65cJL+8blTdP17j1IkntAVtz+nk7/7oH780Fpt74hku0QAAIAxi2UE8sTGHd2SpIbxJVmuBBgcn9ejdx8zWe9aOEmPvN6smx9br//vvlf1/X+8qhNnVetfjp6kM+fVqYJlMQAAAPoR4PLExh1dkqSp44qzXAlwaDwe0+lzanX6nFqtaw7rr8826i/PNerzv39eXo/p2KlVOn1urc6YW6vZdaUyY5kMAABQuAhweWLDjm75vaaJlaFslwIM2YyaUn3+7Dn63FmztWpTmx5a06QH1zTpO/eu0XfuXaP68qCWzhyvJTPGacmM8Zo6rphABwAACgoBLk9s2tmlKeOK5WURb+QBM9Ox06p07LQqXXnOHG1rj+jhV5v06NoWPfp6s/7ybKMkaWJFUEtmjO/fpowLEegAAEBeI8DliQ0t3ZpG90nkqfqKoC46bqouOm6qnHN6ozms5W/s0JPrduqR15r1ZwIdAAAoEAS4POCc08YdXTpu+rhslwJknJlpVm2ZZtWW6eKlDXLOaW1TWE+u2zvQTaoM6fh0d8ulM8ZrchWBDgAA5DYCXB7Y0dWrrt6EGsbTAofCY2Y6rK5Mh9XtHuiWr9uhJ9ft0MOvNuvPq/Yd6KbQag0AAHIMAS4P9M1AOY0lBIDdAt2/pgPd6/0tdHsHulR3y3HpLpcEOgAAMLYR4PLAhpbUGnDTaIED9mJmml1XptnpQJdM7h7oHlyzXX9a9aakvQMdXS4BAMBYQ4DLAxt3dstj0uQqAhxwMB6PaU59mebUl+nDJ+we6Ja/sXugqysP6JipValtWqUOn1ihoN+b5Z8AAAAUMgJcHnh9e6emjCtWkc+T7VKAnLOvQPdaU6eefGOHVm1q06pNrbpn9TZJkt9rOnxiRX+gO2ZqFWsvAgCAUUWAy3HOOa3a1KolM8ZnuxQgL3g8prn15ZpbX65LTkzta+qMaNXGNj27qVXPbmrTb57aqJsfXy9Jqi8P6uiplbTSAQCAUUGAy3Fb2yPa3hHVMVOrsl0KkLdqy4I694h6nXtEvSQplkjqla0dWrWxda9WuiKvR/MnltNKBwAAMoIAl+NWbWqVJB09tTK7hQAFxO/1aMHkSi2YXLnPVrpVm1p3a6WbUBHUMdOqdOzUKh07rUrzJ5bL76XLMwAAOHQEuBz37KY2Bf0ezZtQnu1SgIK2ZytdbzypNds6tLKvlW5jq+5+YaskKehPBcBjp1Vp0bTUJClVJUXZLB8AAOQIAlyOW7WpVQsmVfKv+cAYU+Tb1Ur3kXQr3db2Hq3a2KaVG1u1cuNO/XzZOv006SRJM2pKdOzUKh05uULzJ5Rr3oRylQT4FQ0AAHbHt4McFo0n9FJjhz5yYkO2SwEwCBMqQjpvQUjnLZggSerpTeiFN9u0clOrVm1s1QNrmvSHlaklDMykhvElmj+hXPMnlmtWbalmVJdo6vhiBXxMkgIAQKEiwOWwZa+1qDeRZAZKIEeFirw6fsZ4HZ/+f9g5p20dEb28pUMvbenQy1s69GJju+5+cWv/NWapBcenV5doRnWJJlaGVF8RVG1ZUHXlAdVXBFVcxK92AADyFX/L57DfPbNJtWUBnXxYdbZLATACzEwTKkKaUBHSmfPq+vd3RmJa39K11/bnVY3qjMb3ep+ygE+15QHVlQdVW5Z6rEk/praAJlaG6HoNAEAOIsDlqO0dET24pkmfPHWmfHwJA/JaWdDfP55uT52RmLZ3RNXUEdG2jtSyIts7ImrqTD1fualV2zui6o0nd7vO5zFNHV+sGdUlml5dosNqy3T4pHIdVlumIh+/UwAAGKsGFeDM7BRJV0o6VtJESR9xzt16kGuOlPQjScdJ2inpRknfdM654RSMlN8/s1lJJ7130ZRslwIgi8qCfpUF/ZpVW7rfc5xzau+JqakzFe62tke0Id2Kt665S8teb+kPeEVej+ZOKNPhEyt05KTUNru+lHF3AACMEYNtgSuVtFrS/6W3AzKzckn3S1omabGkuZJukdQl6ftDqhT9XtnaoR89tFZnzK3V9OqSbJcDYIwzM1UWF6myuEiz68r2Op5MOm3Y0aXVWzq0urFdqxvbdfcLW3Tb05skpVrrZteV6YhJ5TpyUoUOn1ShefXlChUR6gAAGG12qA1iZhaWdPmBWuDM7N8kfUdSnXOuJ73vK5L+TdLkA7XCLVq0yK1YseKQaiok65rD+tgvV6grGtfdnzlZNWWBbJcEIA8557R5Z49ebGzX6i3t/cGutTsmSfKYNKu2VLPrylLdMGtKNL26VNPHl6g85JOZZfknAAAgd5nZSufcon0dy9QYuKWSHu0Lb2n3SfqmpAZJ6zP0uRnR1BnRw2uaVR7yqTzoV3nIr/KgXxXFfpUHR+6LSiSWUHtPTK3dvWrtiqm9J6ZILKGe9P4XG9t13+ptCvm9uvkjiwlvADLGLDVGbur44v5lD5xz2toe0YuN7XqpsV2r07Nk/v3FrUoO+Ge5kiKvJlSGNLEypIkVQU2oCGliZVATK0OaUJF6DPppvQMAYCgyFeDqJb25x77tA47tFuDM7FJJl0rS1KlTM1TS0L22Layr/vTCPo/5vaaq4iKNKynS+NIijSsJaHxJ6nXI75XPa/J5PeqNJ9XTG1dXbyqMtXeng1p3TO3px55Y4oB1TKwI6n2Lp+izb5lNeAMw6swsFcoqQzrn8Pr+/dF4Qpt39mh9S5c2tHRpS3uPtrZFtKW9Ry9v6VBLOLrXe1UV+1VfkQp0deVBTagIqr4i9Zh6HlIpC5kDALCXMfG3o3PuJkk3SakulFkuZy/HTR+nx754ujp64uqIxNTRE1NHJK627l7t6OrVznD6sSuqF1rbtDPcu8+pvaVU4CsP+lVZ7FdVcZEmVQZ1+MRyVYb8qiopUkUotb+qONXSV1zkVajIq+IinypC/lH+yQHg4AI+r2bVlu53IpVoPKHt7VE1tvVoa3uPtrZHtLW9R9vaUzNnvvBmm1rCvXtdVxbwqT4d7OrLdwW7CQP2VRb76a4JACgomQpw2yTV7bGvbsCxnFLk82hyVbFUNfhreuNJ9SaSisWTiiWTCnhTQYzpuQEUmoDP298dc3+i8YSaOqK7hbut7ZH+WTNf396ips7Ibl01U+/tGdB6F1JdeVDVpUWqLg2oujSg8ennVcV+llwBAOSFTAW45ZK+Y2ZB51wkve8sSVskbcjQZ44pRT5PKqzR0xEADirg82rKuGJNGbf/kBdPJNUcToW8voC3rb1H2zqi2tbeo2c27NT2johiib07cphJVcVF/eGuvjyoCZW7xufVl6ceK0K06AEAxrbBrgNXKmlW+qVH0lQzWyhpp3Nuk5ldJ+k459yZ6XN+K+nrkm41s/+UNFvSlyR9g3XgAABD4fN6NKEipAkVof2e45xTR09cLV1RtXRGtaOrVzvCUTWHU48t4ahawr16av1ObeuIKLFHk17I79WEyqAmprtqTqgIakJ68pWasoB8Ho+8Hsk5qSOye7f6vvHMrd29auuOaWdXr9q6exUdsIh6yO9VdVlAtWUBTaoKaf6Ecs2fUK7p1SW0EAIABmVQywiY2WmSHtrHoV865y4xs1slneacaxhwzZGSfqzUQt6tkn4m6dqDBTiWEQAAjIZE0qm5M9o/6crA8Xlb0q+bOqM6lH92LC7ypsYxl6TGM1cWFynk3xXMunoTau5Mhcs3W3vUm0iFu5Dfq4VTKrWooUrHTqvSMdOqVB5k3DMAFKoDLSNwyOvAZRoBDgAwVsQSyf5xeDvCvUoknZLpvzfLQ36VBdPLywR9qij2K+Ab/PIIsURSbzSH9fKWDr3wZrtWbNypl7d0KOlSXT7n1JVpUUOVFk0bp2OnVWlyVYjunQBQIAhwAADkgK5oXM9tbtOKDa1asXGnnt3UpnB6VuO68oAWTRunOfVlmlwV0pRxxaopDags6FNZ0M8kWQCQR7KxkDcAADhEJQGfTpxVrRNnVUtKdfN8dVunVm7cqRUbW7VyY6vufnHrPq8N+j0qC/oV9HsU9HkV9HtTz/1eBXy7nvcdLw36+mfrrCkrUk1pUNVlRSou4qsBAIxl/JYGAGCM8npM8yeWa/7Ecl28tEGSFIkl9GZrjza3dqu1q1cdPTF1RuLqjMbVGYkrEksM2JIKR+NqCfcq2rcvnlQkllB3b2Kfn1lc5FVNWUDjS4rSSzEEVFNapPG7Lc1QpLKgX6UBn4qLvHTtBIBRRIADACCHBP0HXjh9sGKJpHZ29aq5M6rmcGpildRjr5rDUe0IR7VxR7dWbmzVzu7e/U7m4jGpNJDqxlkW9KWf+1Safl0W9KkyVKSKkF+VxX5VhHZtlcWpEEgABIDBI8ABAFCA/F6P6sqDqisPHvTcRNKptbtXLeGodoR7taOrV52RmMKRuMLplr/UFutv8duwo1udkbg6emL9s23ui9djqTAX8quiOPVYWbwr8PW9rixOP6b3lwX98noIfgAKDwEOAAAckNdj/ePlDpVzTpFYUu09MbX19Kq9O6a2npjae2Jq7049tnb3pl73xNQS7tXa5rDaulNdQ/fH+lr+0q1/pQNa//omdulvDQzsY1/Qp7JAaswgLYAAcgkBDgAAZIyZKVTkVajIq/qKg7f2DRRPJNURiautu1dtPbHUY3csvfWqo78FMNXy19bdq807u9PjAWOKxPbf8tfH57FUmAv6VBrwpwOhb7d9Hku1QsYSTvFkUvGkUzyRekwkXeoxkX5MJuUxU7DIq2K/t/9nrykNqL4iqPp0q2ddeZCZQwEMCQEOAACMST6vR+NKijSupGhI18cSyf5unh3pLp+dfaGvL/gN3BdJtfptbY8o3LRrX9Klgp7f65HXY/J7TT6PRz6vyecxeT2p116Pyec1JZJOPbGEenoT6okl1BWNK5bYfRChmVRTGtCkqpAmVoY0Kb1NrAxpYmVQkyuLVR5ifCCAvRHgAABAXvJ7PaoqKVLVEAPgSHHOqb0npm0dEW1rj2h7R0Rb2iLa0tajLe09enlLh+5/ebt647u3GAb9nvRMn6nZPksCPgX9Hvm9Hvk8HhX5UqGybyvypl/7dr0uCfjSLX4B1ZUHVVtGyx+Q6whwAAAAGWRm6YlYijS3vnyf5ySTTju6erWlrUeNbT3a0taj7R0RdfUm1B2Nq6s31ZIXjaVaFXsTTrFEUvFEUrGEU28iqVgiqVh81+v9qS4NaGJlUBMqgppQEUo/Tz3WlgVVHvSrJOCVz7sr6Dnn1NWb6G+l7IykWjX7xjHuuXX0xPq7mCZd6tFMCvi8Cvj61if09D8PFXkV8ntVXORVqMjX/zyYftz9eep4qMhLGEVBIsABAABkmcdjqikLqKYsoKOmVA77/Vw6NHVE4treEdG2joi2t6cet7ZFtLUjonXNXXp87Q6Fo/ueLKbI65GTk3NSwrn9LiXRp7jI279ERHnQr5DfK7PUJDheMzlJ0XhC0Viyf83CaDypnlhCkd6EumMJJZIH+ZA9eD2mgM+jIp9HRd70Y/p5//7djnn7nwf2cW5xkVe15alwW18RVHVJQB5mO8UYQ4ADAADIM2ap8Xh9YwjnTdh3y58kdURi2toW0Zb2HjV3RNUZjasrGld3b0JmqbX+vGbpmT79/ZO8lAd3X9dvJFrDeuPJ/rGD3b3x3cYSdvcm+heh3/U8rt54MrUlkor2PU+/7o0nFYkl1dET321f6rxE/+v95Ua/1zShIqTJVSFNqSrWlHEhTRlXrMnp5zWlAcYpYtQR4AAAAApYedCv8nq/5tSXZbuU/hazCvlH9XPjiVS4C0fjauqIaktbj7alxyo2tvVo885uPbBmu1rCvbtdF/B5NDk9EU1lcZGq0ovT+7we+T0mb3qim1jCKRpP9rdA9j8fEDij8cRuITOWcOkAnWrB7H/usVSoTk+s09eKuGv8Y6pVcrfxkb4BYyTT5wW8HvkHjKPc7X28poDPq7J0UC8N+lh3cQwhwAEAAKCg+bwe+bweFRf5VFsW1BGTKvZ5Xk9vQm+2dmtza7c27+xJPd+ZCnubd3artTu1pMX+uoL2jfsL+FNdOQP+XV04A77U+L7KviDl88i51BjCZFKpR+eUdKnn8fRYx3A0nh7/6AaEv9TWO4gxkYNVFvCpPJRqgS1Pd5MtD/n6W2ArQ35VFPe1yBaNeOssdiHAAQAAAIMQKvLqsLoyHVZ34NbKvjGI8fTm95qKvNlbNN65VB194a43PflNbLcWv3TYSz+PxhPq6JuwpiemjkhMHT3x9GNMjW09emVr6nnnfsZR9hk4PrIi5FdlsX+38ZJF+xiv6Pd6ZJKc1D/+sm9MprQr0CaSqUmAEv1hN/Vnn3C79ieSLv3fJDWes2+/11ItkB9aMlXjSwMZ/W8wkghwAAAAwAjqG4Po82a7khSz1PqFfm9mWsLiiaQ6InG198TU1t27+6yk3TG1pZ+3dacC34aWbrX1pM6LxIbfOnio+rqgJp2USDqdf9QEAhwAAACAwuDzevonzJFKDunavnF/A1sD+5bF6GNKjQFMPVf6ufXPcOrxKD020PrHCe65f9dx7dYSmkg65drwPgIcAAAAgKzo6zqpLDWA5eLkLIwoBAAAAIAcQYADAAAAgBxBgAMAAACAHEGAAwAAAIAcQYADAAAAgBxBgAMAAACAHEGAAwAAAIAcQYADAAAAgBxBgAMAAACAHEGAAwAAAIAcYc65bNewGzNrlrQx23XsQ7WklmwXgbzGPYZM4v5CpnGPIZO4v5BpY+0em+acq9nXgTEX4MYqM1vhnFuU7TqQv7jHkEncX8g07jFkEvcXMi2X7jG6UAIAAABAjiDAAQAAAECOIMAN3k3ZLgB5j3sMmcT9hUzjHkMmcX8h03LmHmMMHAAAAADkCFrgAAAAACBHEOAAAAAAIEcQ4AbBzC4zs/VmFjGzlWZ2crZrwthnZqeY2Z1m1mhmzswu2eO4mdk1ZrbFzHrM7GEzO3yPc6rM7Fdm1p7efmVmlaP5c2BsMrMvm9kzZtZhZs1mdpeZHbHHOdxjGDIz+3czeyF9j3WY2XIzO2/Ace4vjJj07zRnZj8asI97DEOWvnfcHtu2Acdz9v4iwB2Emb1P0g2SviXpaElPSLrHzKZmtTDkglJJqyVdIalnH8evkvT/JH1a0mJJTZLuN7OyAef8VtIxks5Nb8dI+lUGa0buOE3STySdIOkMSXFJ/zSzcQPO4R7DcLwp6YtK3ROLJD0o6a9mtiB9nPsLI8LMlki6VNILexziHsNwvSppwoDtyAHHcvf+cs6xHWCT9JSkn++x73VJ12W7Nrbc2SSFJV0y4LVJ2irpPwbsC0nqlPTJ9Ot5kpykEwecc1J635xs/0xsY2tT6h8MEpLOT7/mHmMb8U3STkmf5P5iG6lNUoWkNySdLulhST9K7+ceYxvWJukaSav3cyyn7y9a4A7AzIokHSvpH3sc+odS/+oNDNV0SfUacG8553okLdOue2upUsHviQHXPS6pS9x/2FuZUr0qWtOvuccwYszMa2YXKfUPBU+I+wsj5yZJf3TOPbTHfu4xjIQZ6S6S683sdjObkd6f0/cXAe7AqiV5JW3fY/92pf6jA0PVd/8c6N6ql9Ts0v/kI0np503i/sPebpD0nKTl6dfcYxg2MzvSzMKSopJ+JulfnHMvivsLI8DMPiFplqSv7OMw9xiG6ylJlyjV9fETSt0TT5jZeOX4/eXL5ocDAIbPzK5XqlvHSc65RLbrQV55VdJCpbq5vUfSL83stCzWgzxhZnOUml/gJOdcLNv1IP845+4Z+NrMnpS0TtKHJT2ZlaJGCC1wB9ai1JiSuj3210natvfpwKD13T8Hure2SaoxM+s7mH5eK+4/pJnZDyS9X9IZzrl1Aw5xj2HYnHO9zrm1zrmVzrkvK9XK+zlxf2H4lirV0+klM4ubWVzSqZIuSz/fkT6PewwjwjkXlvSSpMOU47/DCHAH4JzrlbRS0ll7HDpLu/eHBQ7VeqX+5++/t8wsKOlk7bq3lis13mTpgOuWSioR9x8kmdkN2hXe1uxxmHsMmeCRFBD3F4bvr0rNCLhwwLZC0u3p56+JewwjKH3/zFVq8pKc/h1GF8qDu17Sr8zsaaUGLn5K0kSlxgIA+2VmpUr17ZdSX3qmmtlCSTudc5vM7IeSrjazNUr9RfUVpQbL/laSnHOvmNm9km40s0vT73OjpL85514dvZ8EY5GZ/VjSxZLeJanVzPr644edc2HnnOMew3CY2bcl3S1ps1KT5HxAqeUrzuP+wnA559oktQ3cZ2ZdSv0duTr9+ofiHsMQmdn3JN0laZNSrWZfVSp8/TLnf4dlcwrMXNkkXSZpg1KDuFdKOiXbNbGN/U2pLzpuH9ut6eOm1BS3WyVFJD0i6Yg93qNK0q8ldaS3X0uqzPbPxpb9bT/3lpN0zYBzuMfYhrxJulXSxvTffU2S/inpnAHHub/YRnTTgGUE0q+5x9iGvCnVmrtFUq+kRkl/kjR/wPGcvb8sXRwAAAAAYIxjDBwAAAAA5AgCHAAAAADkCAIcAAAAAOQIAhwAAAAA5AgCHAAAAADkCAIcAAAAAOQIAhwAAMNgZrea2d+yXQcAoDAQ4AAAY56Z1ZjZT8xsg5lFzWy7mT1gZmdluzYAAEaTL9sFAAAwCH+SVCzpY5LWSqqVdKqk8dksCgCA0UYLHABgTDOzSkknS/qSc+4B59xG59wzzrnvOeduT5/zITN7xsw6zazJzP5gZpMGvMdpZubM7K1mttLMeszsUTObbGanmtnzZhY2s7+Z2fgB192a3veVdKtf2MxuMbPQAeo1M7vKzN5If86LZvahPc75mpltTLcmbjOz/xvxPzgAQF4iwAEAxrpwenuHmQX3c06RpK9LOkrS2yVVS7ptH+d9Q9JnJR0vqUrS7yR9TdKlkk6TdLika/a45tT0+54p6QJJZ0v6zgHq/U+lWgr/XdJ8SddJutHMzpMkM7tA0pWSLpN0WLrepw/wfgAA9DPnXLZrAADggNKh5+dKdaN8VtLjkv7gnHtqP+fPlfSKpCnOuTfN7DRJD0k61zl3X/qcyyX9j6RjnXOr0vuukfQe59wR6de3SnqXpMnOuXB634ck/ULSOOdcV/qcaufc282sRFKLpLOdc48OqOeHkmY7595mZp+X9ElJRzjnYiPyBwQAKBi0wAEAxjzn3J8kTZR0vqR7JJ0g6Ukzu1qSzOwYM7sj3S2xU9KK9KVT93irFwY8355+fHGPfbV7XtMX3tKWK9XiN3Mfpc6XFJR0b7q7ZdjMwpL+bcD5f0ifs97MfmFmF5pZ4EA/PwAAfQhwAICc4JyLOOfud85d65w7QalWsGvMrELSfZK6JV0sabGkc9OXFe3xNgNbvFz6fffcN5y/G/uuPV/SwgHb4Up1vZRzbrOkOUq1wnVI+r6klenWOwAADohZKAEAueplpf4eW6jUmLernXPrJcnM3j2Cn3OkmZU457rSr5dI6pX0xn5qikqa5px7cH9v6JyLSLpb0t1m9m1J2ySdKOkfI1g3ACAPEeAAAGNaelbIP0i6WakukJ2SFkm6StID2hWaLjezH0uaJ+mbI1iCT9LNZnatUt04vy3p5wMCXT/nXKeZfU/S98zMJC2TVKpU6Es6524ys0vS7/mUUpOzvE+plsHXR7BmAECeIsABAMa6sKQnJV0haZakgKRGSb+V9J/OuZ1m9mFJ31Jq5scXJH1e0r0j9PmPSHpJqUlQipVak+6qA5z/VaXG0l0p6adKdZN8TtJ308fbJH1R0vck+ZUKoO/uaz0EAOBAmIUSAID9GDjDZLZrAQBAYhITAAAAAMgZBDgAAAAAyBF0oQQAAACAHEELHAAAAADkCAIcAAAAAOQIAhwAAAAA5AgCHAAAAADkCAIcAAAAAOQIAhwAAAAA5Ij/H+qMem3Z6BZ3AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "signal = nk.eda_simulate(sampling_rate=50)\n",
    "nk.signal_plot(signal)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this example, we will try to approximate this Skin Conductance Response (SCR) using a [gamma distribution](https://en.wikipedia.org/wiki/Gamma_distribution), which is quite a flexible distribution defined by 3 parameters (**a**, **loc** and **scale**).\n",
    "\n",
    "On top of these 3 parameters, we will add 2 more, the **intercept** and a **size** parameter to give it more flexibility."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def function_gamma(x, intercept, size, a, loc, scale):\n",
    "    gamma = scipy.stats.gamma.pdf(x, a=a, loc=loc, scale=scale)\n",
    "    y = intercept + (size * gamma)\n",
    "    return y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can start by visualizing the function with a \"arbitrary\" parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ccDVZB24qRt+vzpo6lTYd9/NH9PQAIcfngW4lDqnLkmSJKlGFi9ezGGHHca1117LtGnTePHFF7nhhhv4j//4DyZOnEj//v3fcvxuu+3GUUcdxec+9zkefvhhnnzySU4//XT69OlDRLT5urvuuitz5szhl7/8JbNmzeLHP/4x119/fbV/vU1qazdsPNkkJE+Qvc/tW5WfL6zsHwzs0nJwSukPwMnA8ZXj7iCblfLolNKKqlSuzNy52dJqLO8mHXts9qqBZ5+tfV2SJElSDTU2NrL//vtz2WWX8f73v5/3ve99nHfeeZx88sn813/910bPmTRpEjvttBMTJkzguOOO4+Mf/ziDBg1iq622avN1P/zhD/OVr3yFs846izFjxnDXXXdx4YUXvvOJVRKpYN2Y8ePHpylTpuRdRnnccgscd1z2HriDDtr8sXPmwE47wcUXw1e/2jn1SZIkqfCee+459thjj7zL6HSLFi1iyJAhXH/99Zxwwgmdeu3N/TOPiKkppY12aHwereymTMle3D127DsfO3QojB4N99zzzsdKkiRJdabl/W+zZs3i4Ycf5qSTTmLAgAEcffTReZfWZrWahVKdZepU2GMP6Nu3bcd/4APws5/B6tXZi78lSZKkLmLNmjV8/etfZ9asWfTp04f999+f++67j75t/W/pAjDAlVlKWQduS/7GYMIE+M//zM478MCalSZJkiQVzVFHHcVRRx2Vdxkd4hDKMps7F+bPh733bvs5hx6are+9tyYlSZIkSaodA1yZPf98th41qu3nbL89jBljgJMkSdJbFG1yw3rWkX/WBrgymzEjW++665adN2ECPPhg9hycJEmSuryePXuycuXKvMvoMtasWUOPHu17ms0AV2YzZ2aTlwwZsmXnHXIIvPYaPPlkTcqSJElSuQwaNIg5c+bw2muv2YmrsXXr1jF//ny23nrrdp3vJCZlNmNG1n3bgjfHA3DAAdl68mTYd9/q1yVJkqRS6d+/PwBz585lzZo1OVdT//r27cuAAQPada4BrsxmzmxfABs6NHuh9+TJcOaZ1a9LkiRJpdO/f/83g5yKyyGUZbVqFfz1r1v+/FuLAw6Ahx+uakmSJEmSassAV1YvvADr1nUswM2eDfPmVbcuSZIkSTVjgCurlhkod9utfee3fg5OkiRJUikY4Mpq5sxs3d4O3F57Qa9eBjhJ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",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, 20, num=500)\n",
    "y = function_gamma(x, intercept=1, size=1, a=3, loc=0.5, scale=0.33)\n",
    "\n",
    "nk.signal_plot(y, color=\"red\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "Since these values are already a good start, we will use them as \"starting point\" (through the `p0` argument), to help the estimation algorithm converge (otherwise it could never find the right combination of parameters)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.9519311 , 2.20935982, 1.02426737, 1.28256512, 2.03012192])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params, covariance = scipy.optimize.curve_fit(function_gamma, x, signal, p0=[1, 1, 3, 0.5, 0.33])\n",
    "params"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAAEzCAYAAABwueE8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABCLUlEQVR4nO3deZhcVZn48e+p3rJDkwRCgCSEHUEDCdAiILuoICOICFHBMSCKjI7rOI4guKCOMvpzcEFGAQ2LiIILKovs0ECCSMKOgUAIW0I2snVX1/n9cauSSqe6u9Lp6tvV9f08z32q695zq96+3am+b8457wkxRiRJkiRJA18m7QAkSZIkSeUxgZMkSZKkKmECJ0mSJElVwgROkiRJkqqECZwkSZIkVQkTOEmSJEmqEvVpB9DZmDFj4qRJk9IOQ5IkSZJSMXv27EUxxrGljg24BG7SpEnMmjUr7TAkSZIkKRUhhPldHXMIpSRJkiRVCRM4SZIkSaoSJnCSJEmSVCVM4CRJkiSpSvSYwIUQvhRCeDCEsDyE8FoI4Q8hhL3KOG/vEMIdIYTVIYQXQwjnhhBC34QtSZIkSbWnnB64Q4EfAQcChwNZ4JYQwlZdnRBCGAXcDLwC7Ad8Cvg88JnNjFeSJEmSalaPywjEGN9R/DyE8CFgGfA24A9dnDYdGAacFmNcDcwNIewOfCaEcFGMMW5e2JIkSZJUe3ozB25k/rwl3bR5K3BXPnkr+CswHpjUi/eUJEmSpJrXm4W8fwA8DNzXTZtxwIJO+14pOvZsL95XFTR7/hKue2gBAThh3+2ZOrE57ZAkSZIkdbJJCVwI4SLgIOCgGGNHXwURQjgTOBNgwoQJffWyKtPs+Us45ZL7aOtIRrZeO3sBV53RYhInSZIkDTBlD6EMIfwPcApweIxxXg/NXwa26bRvm6JjG4gxXhJjnBZjnDZ27NhyQ1IfaZ23mPaO9dMS27M5WuctTjEiSZIkSaWUlcCFEH7A+uTtiTJOuQ84OIQwpGjfUcBC4LlNDVKV1TJ5NA1161d4qKsLLFy6mtnzu5vmKEmSJKm/lbMO3MXAR4BTgSUhhHH5bURRmwtDCLcWnXYlsAq4LISwVwjhBOA/ACtQDkBTJzZz1Zlv5dQDJnD0ntuQCYGrHnie6Ze2msRJkiRJA0g5PXCfIKk8eSvwUtH2uaI22wI7FZ7EGJeR9LiNB2YBFwPfAy7qk6jVZ2bPX8LFtz0DwDffuzdv2WFLsh05ctGhlJIkSdJAU846cKGMNqeX2DcHOKR3Yak/zJ6/hOmXttKWzdFYn2HmjBZaJo+msT5DezZHQ32Glsmj0w5TkiRJUl5vlhHQINE6bzFt2Q17284+bGdmzmihdd5iWiaPthKlJEmSNICYwNWwrnrbCklbYfikSZwkSZI0MJjA1bCpE5tL9raVGlppEidJkiSlzwSuxk2d2LxRclZqaKUJnCRJkpS+shfyVu0oDK2sC1jIRJIkSRpA7IHTRroaWilJkiQpXSZwKqnU0EpJkiRJ6XIIZa15+mZ45lbI5cpqXljoe/b8JRUOTJIkSVJP7IGrNdfNgDVLYes38fARv+SehbHLYZJWo5QkSZIGFnvgak12DezQQm7RU7x65Vl876YnmH5pa8ketlLVKCVJkiSlxwSu1nS0wY4H0zrx4xwdHuD4cHeXyZnVKCVJkqSBxSGUtSTXATEHdY00HXIWD8/7M19quIrbcweUTM6sRilJkiQNLPbA1ZKO9uQxU8/UHccw5N3fYuuwlD9Oe6TL5GzqxGbOPmxnkzdJkiRpADCBqyUdbcljXSMAu+9/JOxxHNs9egmsXJRiYJIkSZLKYQJXSwo9cPkEDoDDz4W2ldD6o25PdTkBSZIkKX3OgasluUIC17B+39hdYc/3wAM/gwP/DYZuudFpLicgSZIkDQz2wNWSdUMoGzbcf/BnYe1yePBnJU9zOQFJkiRpYDCBqyWlhlACbPsW2OVouO9HyXDKTlxOQJIkSRoYTOBqSVc9cAAHfw5Wvw6zL9voUGE5gc8cvZvDJyVJkqQUOQeulnTVAwcw4QCYdDDc+0PYbwbUN21weOrEZhM3SZIkKWX2wNWSdevAleiBg2Qu3IqX4JFflzxsJUpJkiQpXfbA1ZLuhlACTD4Uttkb7rsY9vkghLDukJUoJUmSpPTZA1dLOi3kvZEQ4K1nw2uPwzO3bnDISpSSJElS+kzgakmumzlwBXudCCO3hft+uMFuK1FKkiRJ6XMIZS3Jz4F7/NXV/O2ZZ2iZPHrjYZD1jbD/mXDr+fDyHBi3N7C+EmXrvMWlz5MkSZJUcSZwtSQ/hPKL1z/O3OyKrueyTfsI3Pnfybpw7/3xut1WopQkSZLS5RDKWpLvgVvZkel+LtvQ5qSIyZxrYflL/RykJEmSpK6YwNWSoiImPc5la/k45LLwwCUbHXI5AUmSJCkdDqGsJfkeuP85ZT/ueqWx+7lsW02GPY6FWT+HQz4HjcMBlxOQJEmS0mQPXC3J98C9ecJYzj5s554Tr7eeA2uWwt9nrtvlcgKSJElSekzgaklHYRmBLhby7mzCAbD9ftD6I8h1AC4nIEmSJKXJIZS1pKeFvEt569lw7enw5I2wx3EuJyBJkiSlyASuluQ2sQcOYPfjYMsJcO//wh7HAS4nIEmSJKXFIZS1pDCEMrMJeXtdPbR8Al5ohQWz1u22EqUkSZLU/0zgaklHWzJ8MoRNO2+fD0LTFnDvD4H1lSi/d9OTTL+01SROkiRJ6idlJXAhhENCCL8PIbwYQoghhNPLOOcdIYT7QggrQgiLQgg3hBB23eyI1Xsd7Zs2/62gaSRMOx0e/z0sec5KlJIkSVJKyu2BGwHMBT4FrO6pcQhhR+AG4C5gH+BIYChwY+/CVJ/oaN+04ZPF9v8YhAy0/sRKlJIkSVJKyrqbjzHeSD75CiFcVsYpU4EG4Esxxo78eRcCfwshjIkxLupduNoshSGUvbHFdrDXifDQFUw99ItWopQkSZJSUKk5cA8C7cCMEEJdCGEkcBrwoMlbino7hLLgwHOgfSXM+gVTJzaXtxi4JEmSpD5TkQQuxjgfOAo4H1gLLAP2Bo4t1T6EcGYIYVYIYdZrr71WiZAE+R64zVg5YtzeMPkwuP8nkF0LWI1SkiRJ6k8VSeBCCOOA/wOuAPYDDgVWAL8OIWz0njHGS2KM02KM08aOHVuJkATJOnCb0wMHSS/cG6/AnGutRilJkiT1s0oNoTwbWBlj/EKM8e8xxjuBDwJvBw6s0HuqJ5s7hBJgp8Nhm73h3h/S+s/XrEYpSZIk9aNKJXDDgI5O+wrPXXsuLR1tUNewea8RQtIL99oTHN04x2qUkiRJUj8qdx24ESGEKSGEKflzJuSfT8gfvzCEcGvRKX8C9g0hnBtC2CWEsC/wC+AFYHbffgsqW0cbZDYzgQPY6wQYtR27PPMLZs5o4TNH78bMGS0WNJEkSZIqrNzesGnA3/PbUJLiJH8HLsgf3xbYqdA4xvg34FTg+Hy7v5JUpTwmxriyTyLXpuvIbv4QSkh68Vo+Ds/dxdT6Z2mZPJrWeYudAydJkiRVWLnrwN0OhG6On15i39XA1b0NTBXQ0QaNw/vmtfY9De74Dq/f/F2m//NDtGVzNNZn7ImTJEmSKsj5aLVkcxby7mzIKJj2EbZ87s9snX3ZQiaSJElSPzCBqyUd7SxZG/tu3bYDzoJMHWc0/MVCJpIkSVI/2IxVnVVtVq9dw30vL+d7Tz/ZN8MdR40ns/dJnPro71h70OfZZ7edHD4pSZIkVZA9cDWkbe0a1sb6vh3ueOA51GVXM2PIbSZvkiRJUoWZwNWQoZkcHaG+b4c7brMn7Hwk3P9THvrnS303PFOSJEnSRhxCWUMaQ5a37zGez4zbjZbJo/uux+ygz8Bl7+KPl3+by9qPshqlJEmSVCH2wNWSjnbGbjGSsw/buW+Tq4kHsnDUW/ho+AOZmLUapSRJklQhJnC1pKM9WYS7r4XAyv0/zXZhESfU3WM1SkmSJKlCTOBqSV+uA9fJLm97L6u22pMvjfoLM/91P4dPSpIkSRVgAlcrYoRchXrgAEJg2BFfoHn1fF578FoLmUiSJEkVYAJXK3LZ5LFSCRwwe9jBzIvjmTD3x0y/9D6TOEmSJKmPmcDVio625LFCQygBWp9byo+zx7FnZj5vyz1kIRNJkiSpj5nA1Yp+SOBaJo/mz5mDeTGO4ez6G2jZcauKvZckSZJUi0zgakVHe/KYqdzSf1MnNnP5jIN4ZpePsm94iqk8VrH3kiRJkmqRCVytKCRwFeyBgySJe/vJ/0770DE8f8PXnAcnSZIk9SETuFrRD0MoC2YvXMP3Vx7NhCWtXHjpTJM4SZIkqY+YwNWKdT1wlatCWdA6bzG/bD+cZXEYZ3C9xUwkSZKkPmICVyvW9cBVPoFrmTyatvoRXN5xDO+oe5DDtny14u8pSZIk1QITuFqR6585cJDMg5s5o4Wlb5nBmsxwtn34BxV/T0mSJKkWmMDVin4cQllw5SPLuaTtHTTP/wuP/f2efntfSZIkabAygasV/VjEBJJ5cG3ZHJdm38nyOIyme/67X95XkiRJGsxM4GpFIYHL9E8PXMvk0TTWZ1gZhnNFfCc7LboNXnqkX95bkiRJGqxM4GpFRzZ57KceuMI8uM8cvRsHffBcaNoCbv9Wv7y3JEmSNFiZwNWKfqxCWTB1YjNnH7YzHU1bcP+4D8CTf4KFD/fb+0uSJEmDjQlcrejnOXAFs+cvYfqlrZz51H4si8NZ+uev9ev7S5IkSYOJCVytSKEKJawvZrIsDuP/Ot7Fli/cAgv/3q8xSJIkSYOFCVytyKWTwBWKmdQFmBneSbZpS/jbN/o1BkmSJGmwMIGrEfNfXQrAP15a3a/vWyhmcvL+Ezhm3115ee+z4JmbYf69/RqHJEmSNBiYwNWA2fOX8Mt7ngbgY1f+g9nzl/R7DL99aAFXPfA8x96/B21Dt4ZbzocY+z0OSZIkqZqZwNWA1nmLCfkhlKuzgdZ5i/v9/duyOXIRVmQbuHf7j8ILrfD0Tf0ahyRJklTtTOBqQMvk0TRlcgCE+gZaJo/u9/cvzINrqM8w8sB/heYd4dYLIJfr11gkSZKkalafdgCqvKkTmxk3bXt4CH7+kRb2ndjc7+8/c0YLrfMW0zyskdbnltP85k8z+Y5Pwdzr4M0n9Ws8kiRJUrUygasR223RBMC+E/u3961gaj5pnH5pK23ZHP9bP5bZY/dg2G3fgDf9S79Xx5QkSZKqkUMoa0XsSB5DXWohFM+Fa8vC38Z/DJY8Cw9dkVpMkiRJUjUpK4ELIRwSQvh9COHFEEIMIZxexjkhhPDpEMITIYS1IYSXQgjf2uyI1TsxP9csk17OXpgLlwFCCCzf/nDYoQXu+A60rUotLkmSJKlalHs3PwKYC3wKKHchse8BnwC+COwBvAu4c1MDVB/JdUBIt8N16sRmzj32TWQygVyMXPCnx3hi78/CGy9D68WpxiZJkiRVg7LmwMUYbwRuBAghXNZT+xDCbsA5wJtjjI8XHfp7L2JUX4i5VIdPFixZ1UYuRnIR2rM5bl25C7vvfizc/X3Y9zQYsXXaIUqSJEkDVqW6ZI4H5gHHhBDmhRCeCyFcHkLw7jwtMf0eONh4SYGWyaPhyPMhuwZuvzDt8CRJkqQBrVJVKCcDE4EPAKcDEfgu8IcQwltjjBss/hVCOBM4E2DChAkVCqnGxRxk0u+B22hJgXmLYfJopk77KDx4Kez/Mdh697TDlCRJkgakSiVwGaAJ+FCM8SmAEMKHgCeB/YD7ixvHGC8BLgGYNm1arFBMtS2XGxA9cLDxkgKN9Rmu/uDHmPKPq+CW8+DUa1KOUJIkSRqYKnVH/xKQLSRveU8DHYBdbGkYIHPgCoqXFGjP5rhnYYSDPwtP/QXm3ZF2eJIkSdKAVKkE7h6gPoSwU9G+yUAdML9C76nuxA4IIe0o1um8pEDzsEY44CzYYge46b+SHkNJkiRJGyh3HbgRIYQpIYQp+XMm5J9PyB+/MIRwa9EptwAPAT8PIewTQtgH+DnJ0MlZffodqDwDZA5cwUZLCvzxUWYvXA1HnAcvPwKPXJ12iJIkSdKAU24P3DSSJQD+DgwFzs9/fUH++LbAut62fJGSY4FXSdZ++yuwADi+cwET9ZMBsA5cZ52XFGidtxj2OhHG7wO3XgBr30g7REmSJGlAKeuOPsZ4e4wxlNhOzx8/PcY4qdM5L8UYT4oxjowxbh1jnB5jfKXvvwWVZYDNgYMulhTIZOCYb8OKl+Dui9IOUZIkSRpQKlWFUgPNAFkHrljJJQWAqRMPgDefDPf+EPb5IGw1OeVIJUmSpIHBBK5WxDig5sAVlFpSYOaMFqYeeT48/kf465fhlKtSjlKSJEkaGAZWl4wqJzewqlAW67ykQOu8xTBqWzjkc/DkjfDMLWmHKEmSJA0IJnC1YgDOgSsouaQAwFvPhuYd4S9fgo72VGOUJEmSBgITuFoxAOfAFZRcUmD+EqhvgmMuhEVPwQOXpB2mJEmSlLqBeUevvjfA1oHrrOSSAgC7HgM7Hwm3fwveeDXdICVJkqSUmcDVigG4Dlyx4iUF6jKBhUtXJ71wIcAx34L21XDTV9IOU5IkSUrVwL2jV98awHPgYP2SAifvPwFC4KoHnmf6pa1JEjdmF3jbp+CRq+HZO9MOVZIkSUqNCVytiLkB3QMHSRK33ZZDyXbkNh5KecjnoHkS/PEzkF2bapySJElSWgb2Hb36TsxBZuD/uLscStkwFN71XVj8NNz7/9IOU5IkSUrFwL+jV98Y4HPgCrodSrnLUbDn8XDnd+H1Z9MOVZIkSep3A/+OXptt9vwlzF/8Bm+0x7RDKUu3QymP+RZk6uHGz0Gsju9HkiRJ6ismcIPc7PlLmH5pKy8sXsHTr65MerKqQJeLe48aD4f/FzxzCzx2Q6oxSpIkSf3NBG6Qa523mLZsjkzMkY2Z9T1ZA1yXi3sD7HcGjNsb/vxFWL001TglSZKk/mQCN8it68kKEUKGlsmj0w6pbMWLe7e15/j+LU8lSVxdPbznh7DyVbjZteEkSZJUO0zgBrlCUZAJWzax27ZbMnVic9ohla14GGUOuOeZResLmozfBw48Bx66AubdnnKkkiRJUv8wgasBUyc2M36LJkYNa0o7lE1SSD7ftssYMoGNC5oc+iXYajL8/t+gbWW6wUqSJEn9wASuVlTJMgKdTZ3YzKeP3LV0QZOGofCe/4Wl8+Fv30g1TkmSJKk/VN8dvXon5iDUpR1Fr3Rb0GTS22DaR6H1R/DCg+kGKkmSJFWYCVytiNXZA1dQXNBkg2GUAEd+NVle4PefhOza1GKUJEmSKq167+i1aWIOMtXZAwfrC5rUBajLBBYuXb2+F27IKDj2+/DaE3DHd1KNU5IkSaokE7hakctVdQ9coaDJyftPgBC46oHn11ekBNj1aJgyHe6+yKGUkiRJGrSq945emyZWdwIHSRK33ZZDyXbkyEVY257juocWrG9wzIUwajv43cegbVV6gUqSJEkVUt139Cpflc+BK2iZPJr6TAAgAr+ZvaBoKOUW8C8/gtf/Cbecl16QkiRJUoVU/x29ylPlc+AKpk5s5qRpOxDyzzs6OhU02fEQOODj8MAl8M/bUolRkiRJqhQTuFpRpevAlXLCvtvT1NBFQROAI8+DMbvCDWfD6qWpxSlJkiT1tcFxR6+eVfE6cJ31WNCkYSi89yew4mX48xfSDVaSJEnqQyZwtWIQFDEp1mNBk+2mwiGfh0eugTm/SS9QSZIkqQ8Nnjt6dS/mIDO4ftzdFjSBJIHbfn/447/DkudSiVGSJEnqS4Prjl5dG0Rz4Ap6LGhSVw8nXgoEuG4GdLSnEaYkSZLUZwbXHb26NojmwBXrsaBJ80Q47n9gwYNw+4XpBSpJkiT1ARO4WjFI1oHrrMeCJgB7nQj7fBDuugievTO9YCVJkqTNNPju6FXaIFkHrpQeC5oAvPM7MHpn+O2ZsHJx6ReSJEmSBjgTuFqRG1xVKDvrsaBJ43B43//BqsVw/VnJ9ZAkSZKqTFl39CGEQ0IIvw8hvBhCiCGE08t9gxDCLiGEFSGEN3odpTbfIJ0DV9C5oEk2m+P7tzy1YRK37VvgHd+Ep2+Cuy9KJU5JkiRpc5TbJTMCmAt8Clhd7ouHEBqBqwEnHqUtdkAIPberYoWCJhkgB9zzzKKN58PtNyOZE3fbN2DeHWmFKkmSJPVKWQlcjPHGGON/xhh/Q3JvXK5vA48A1/YmOPWhQTwHrqBQ0ORtu4whEyg9Hy4EOO7/wehd4LqPwvKX0gtYkiRJ2kQVmxQVQng3cCxwTqXeQ5tgEK4DV8rUic18+shdu58P1zQC3n8FtK2C33zE9eEkSZJUNSpyRx9CGA/8DPhgjNG5bwPBIJ8DV6ys+XBb7w7H/QCevw9uPT+VOCVJkqRNVakumV8CP44x3l9O4xDCmSGEWSGEWa+99lqFQqpxg3QduK6UNR/uzSclc+Lu/SE8+ru0QpUkSZLKVqk7+sOB80II2RBCFvg/YHj++ZmdG8cYL4kxTosxThs7dmyFQqo9s+cv4eLbnmH2c/l1zwb5HLhiZc2Hg6Qq5Q4HwPWfgJfnpBOsJEmSVKZKJXB7A1OKtnNJqldOwYIm/WL2/CVMv7SV7930JB/+v/uSnTUyhLKgrPlw9U3w/l/CkC3hqlNd5FuSJEkDWrnrwI0IIUwJIUzJnzMh/3xC/viFIYRbC+1jjHOLN+BFIJd/vqTkm6hPtc5bTFs2Ry5CLptNdg7yZQRKKWs+3Mht4AO/gjdegWtPs6iJJEmSBqxye+CmAX/Pb0OB8/NfX5A/vi2wU59Hp15rmTyaxvoMdQEa6/PpSw0NoSzWeT7c3U8v4uSf3seV9z+/vtF2U5OiJs/dBX/9clqhSpIkSd0qdx2422OMocR2ev746THGSd2cf1mMcUTfhKxyFOaAfebo3bjstKnJzhoqYlKseD5cIBlKmc1Fzr1h7oY9cVNOgZaz4YGfwkO/TCtcSZIkqUu1eUdfI6ZObObsw3Zmn+1HJTtqbA5cscJ8uLrM+mGkHbm48XDKoy6AyYfBH/8dnr0rhUglSZKkrpnA1YLYkTzWaA9cwdSJzVxw/F7UZ8K6nriNhlPW1cNJl8FWk+Ga6fDaUylGLEmSJG2otu/oa0WMyWONzoErduoBE7jmY2/loO6GUw7dEqb/Guoa4cqTYOWiFCOWJEmS1jOBqwU5e+CKlTWcsnkSnHI1rHgZrj4V2tekE6wkSZJUxDv6WhBzyaMJ3DplDafcfhq896fwwv1w/cchl0szZEmSJMkEriY4B66ksoZTvulf4Mjz4dHfwi3npRitJEmSZAJXGwo9cM6B20hZwynf9inYbwbc+//g3v9NKVJJkiTJBK42OAeuW6WGU97zzCJOueQ+vvy7Ocx+fim88zuw5/Fw05fhH9ekHLEkSZJqlXf0tWDdHDh74LpSPJwyEyAXoa0jcuX9zzP90lZmv7AcTvgZTDoYbvgEPH1L2iFLkiSpBpnA1QKLmJSlMJyysT5DYUBlBNa257juoQVQ3wQfmAlb7wG//hAsmJVmuJIkSapB3tHXAufAlW3qxGZmzmjhlAMmUF+XpHER+PWsF5LhlK/kYPp1MHwszHwfvPJYugFLkiSpppjA1YJ1c+BC9+0EJEncN9+7NydP22FdT1y2IzLz/ueTZQYeWwsfvh7qh8AVx8OiZ9IMV5IkSTXEBK4WOAeuV07Yd3uaGtYPp4SiZQZWNMOHf59c2yveA0ueSytMSZIk1RATuFrgOnC9UjycsuQyA6vGwodvgLaVcPl7YNmLKUYrSZKkWuAdfS1wDlyvFYZTfq3TMgN3P70oGU45fxR86HewekkynPKNV9MOWZIkSYOYCVwtcB24zVa8zEAhicvmIl+5fg5ffqCBJ474OSx/ES47Fla8nHa4kiRJGqS8o68FMSaPzoHbLIVlBjYYThlh5v3Pc+z17dy878WwbAFc9m5YvjDFSCVJkjRYmcDVAufA9ZmpE5u5oGg4ZUE2F/n4XUN44qjLkx64y96dJHOSJElSH/KOvhasmwPnj7svFIZTlipu8o05o3jiqCtg5SL4xbtg6fMpRipJkqTBxjv6WuAcuD7XXXGTY3+3lr/s+1NYsxR+8W5Y/M+Uo5UkSdJg4R39IDV7/hIuvu0ZZs9f4jpwFdRVcZOzb49cvMNFZNesgJ8fAy/PSTtUSZIkDQImcIPQ7PlLmH5pK9+76UmmX9rKUy8vSw7YA1cRXRU3+e85Q3n3ii+zsiMkPXHPt6YYpSRJkgYD7+gHodZ5i2nL5shFaM/meHzh0uSA68BVTFfFTZ7MjeeYZf/JojiS3OXHw9O3pBajJEmSqp8J3CDUMnk0jfUZ6gI01GfYc9zw5IBDKCuqq+ImL8SxvGP5l3mifRs6rjwZ5vwmxSglSZJUzerTDkB9b+rEZmbOaKF13mJaJo9ml7UPJAccQllxUyc2M3ViM3uN34Jzb5hLRy4SgcVswcltX+HSxu9ywHUfZcH8Z9j+3V+EEHp8TUmSJKnAO/pBaurEZs4+bGemTmx2GYEUlOqNW8EwPtz2H/yxo4XtZ13Iq9f82/oKoZIkSVIZ7IGrBS4jkIpSvXFraeSc9k+yMI7mzCeugGsWw4mXQuOwtMOVJElSFfCOvha4jECqinvj6usCkQzfzE7n/I7TyT15IysvOQZWvJJ2mJIkSaoCJnC1INoDl7bCwt8nT9thXZXKX7Qfzcfa/p3w2hOsvPhgWPhwmiFKkiSpCnhHXwvWzYGzBy5tJ+y7PU0NmXVJ3M25abyv7TyWrc7S9rOjmXfbFanGJ0mSpIHNBK4W5ApDKP1xp61QIbS4uMljcRLvWft1/tExkcl3nMNtPzqH2c8tTjlSSZIkDUTe0deCaAI3kBSGU36taOHvRWzB9LYvc3X2UA579Qpe//n7+fU9j6cdqiRJkgYY7+hrgXPgBqTi4iaN9RnaaeA/smdwXvtpHBYe4i1/PYnvXf1nZs9fknaokiRJGiC8o68FzoEbsAq9cVedURhWmeHyjndwWvsX2Sa8zhmPf4SfX/J9rrz/+bRDlSRJ0gBgAlcLXAduwOs8rPLe3N68e+03mRfHc3HD91nzhy9w7nUP2RsnSZJU48q6ow8hHBJC+H0I4cUQQgwhnN5D+0NDCDeEEF4KIawKITwSQvjXPolYm8514KpG8bDKlzNbc1Lbefwi+w7+tf7P/Ms/zuDTP/0D37rxcS6+7RmTOUmSpBpUbpfMCGAu8ClgdRntDwTmAO8D9gJ+DFwSQji1N0FqMzkHrqoU98bFTAMXZE/jE23/xi7hRX7f8CWeuPu3fPevT3LyT+9zaKUkSVKNqS+nUYzxRuBGgBDCZWW0/2anXT8OIRwGnAhcuYkxanPFmDw6B66qnHrABHYbN5LrHlrANQ8GHm+byI8afsBljd/hJ9ljuSh7El+5fg6PLlzGCftuz9SJzWmHLEmSpArrzy6ZUYBjvtLgHLiqVdwb90IYz3vbLuBX2SM4q/6P/K7xXHZkATPvf97eOEmSpBrRL3f0IYRjgSOAS7o4fmYIYVYIYdZrr73WHyHVFteBq3qFuXHnvGNvFhz4Dc5s/xzbhCX8sfHLnFb3V7K5HF+5fg5f/t0c58ZJkiQNYmUNodwcIYS3kQyb/LcY4wOl2sQYLyGf3E2bNi1WOqaa4xy4QWHqxOZ1wyRnv+mTXHL/IbTMPY/zGy7n8Mzf+Vz7x5h5P1zz4AvMOGhHRg5toGXyaIdWSpIkDSIVvaMPIRwE/Bk4N8b440q+l7rhOnCDztSJzfzn+9/Oy++6nHOz/8r+mSf4a9MXeWfmfrK5yE/unGehE0mSpEGoYglcCOEQkuTtqzHG71fqfbSh2fOXbFxi3jlwg9apLRM5/oxz+cnuv+DFOJYfN/6AHzf8D2NZQgSyuejQSkmSpEGkrCGUIYQRwM75pxlgQghhCvB6jPH5EMKFwP4xxiPy7Q8F/gT8CLgyhDAuf25HjNFJbhUye/4Spl/aSls2R2N9hpkzWpLhc64DN6glQyuP5ar79uTGP32HT9f9hgObPs/Xsh/iNx2H0BEDM+9/3qGVkiRJg0C5c+CmAbcVPT8/v10OnA5sC+xUdPx0YBjwufxWMB+Y1KtI1aPWeYtpy+bIRWjP5midt7hTAmcP3GB2ylsnM3v8hVw79yTe/vj5fPeNn3Jc5j7+s/2jvMjYdUMrA1CXCSZzkiRJVajcdeBuB0I3x08v8fz0Um1VOS2TR9NYn6E9m6OhPkPL5NHJAefA1YykN+4IeOdhPH/TD2l54EJuynyB72bfzxUdR9NB3bqhlcXJ3AXH78WpB0xIO3xJkiT1oOJVKNV/pk5sZuaMFlrnLd6wV2XdHLguc3ANNpkME475FLS8l8W/OovzFv2Sk+ru5L/aP8JDcdd1zYrnyT26cBlvGr8FS1a12SsnSZI0QJnADTLFpebXiTnnv9WqLScw/uw/8c87r2KHe7/KbzNf5dqOt/Pt9g+wiC3WNeuIMDNfrbJ4iOXytVkCcMK+25vQSZIkDQAmcLUgdjj/rZaFwE5vPxVa3gN3/jfvu/d/Oa7pIe7Y7izOeXoK7blA8eKLxUMsC66Z9QKH77Y1Y0c2mcxJkiSlyASuFsSc898ETSPgqPMJU05lyJ8+yzue+28eHrcnV275Mb7z1DZkszlyXZya7Yjc9NgrwIbJnEMuJUmS+pcJXC3IdTiEUuuN3Q1O+wM8+luG3fxVZsz7FO/b8Qj+NO7jvBC259K7n6UjFzfolStWnMwBVrWUJEnqRyZwtSDmHEKpDYUAe50Iu70b7v8xW951EdMX3A7TPsI7T/s4dy+E5mGNzF24jEUr1vK3J18l21E6pbOqpSRJUv8xgasFMQcZEziV0DAEDvp32OdDcPuFMOsXvOWRX/OWgz4N+5wF+SRs9vwlXPfQgrKTua9cP4fbn3zVOXOSJEl9LMTY1UCpdEybNi3OmjUr7TAGlz99Dub+Br74XNqRaKB77Um4+Vx46i8wfCwc/FmY+pEk0csrJHMBGNlU3+OQy/q6wMnTdjCRkyRJKlMIYXaMcVrJYyZwNeCPn4HHboAv/DPtSFQtnr8f/vY1eO4uGLUdHPJ52OeDUNewUdPZ85fQOm8xK1a3d5vM1Tu0UpIkqSwmcLXuD5+CJ26Ezz+ddiSqNvPuSBK5BQ9C8yR4+xdh75NKJnKwvnfu17NeKDnMsi7AB/afYG+cJElSN0zgat3vz4Gnb4bPPpF2JKpGMcLTNyWJ3MtzYMsJ8LZPw5TpGwytLFY8Z+7WJ16lI7fh50y9VSslSZK6ZAJXIwpD2Ta6Ib7+bJh3G3zmsfSCU/XL5eDpv8Kd34UXZ8GIcXDgJ5M5ck0jujztyvuf59wb5pYcWpkJSTJ3knPkJEmS1jGBqwGz5y9h+qWttGVzNNZnmDmjZf3N8O8+Ds/dDf8+J90gNTjECM/eAXd9D569E4Y2wwFnwX4zYPiYkqcUeuSuefCFjXrjCuyVkyRJSnSXwLmMwCDROm8xbdkcuQjt2Ryt8xavvwGOHcm6X1JfCAEmH5psLzwId303WYLg7v+BN58MLZ+ArXff4JSpE5uZOrGZvcZvsUFvXIB1vXKd15IzmZMkSdqYCdwg0TJ5NI31GdqzORrqM7RMHr3+YMxBpi694DR47bAfnHpNsvxA64/gH1fDQ5fDzkcmidxOh2/wnwenHjCB3caNpHXe4nULhXfulSu1MLjJnCRJUsIhlINIl3Pgrv0IvPwInDM7veBUG1Yuhlk/hwd/Bm+8AmP3gP0+mvTMDRlV8pTu5sgVM5mTJEm1wjlwte7Xp8Grj8MnH0g7EtWK7FqYex3c/xN46R/QMBze/P4kmRu390bNy11LrqA4mVu+NksAi6BIkqRBwwSu1l3zQVj0DJzdmnYkqkUvzoYHfw5zfwPZNbD9/jDtX2HP46Fx2EbNNzWZK6ivCxy+29aMHdnEm8ZvwZJVbfbSSZKkqmQCV+uung5LnoOP35N2JKplq5fAw1clQywXPw2NI2Gv9ybrye1wQMlCO71N5sAhl5IkqXqZwNW6Kz8AyxfAWXenHYmULEMw/x54+Ep49HpoXwlb7QRTToW3fAC22L7kaX2VzDnkUpIkDXQmcLVu5vuTghIfuyPtSKQNrX0DHv89/H0mzL8byC9R8JZTYPd3QdPIkqcVkrlCJctFK9bytydfJdtR/udZfV3g5Gk7ONxSkiQNOCZwte5XJ8Kq1+HM29KOROra688myxA8fCUsex7qh8AuR8GbToBdjyk5X65YYbHwAIxsqt+kXjp76CRJ0kBiAjfIdbl8QMEv3wtrV8CMW/o/OGlT5XKw4AGY+1t47Pqk97hhOOx2TJLM7XwkNAzp8WU2Z8glWBRFkiSlxwRuEJs9fwnTL22lLZujsT7DzBktG99gXv6epPrfR29KJ0ipt3IdyXy5ub9NhlquWgxNo2CXo5Mhljsf1eX6csVKDbm8/anXyGZz5MoMxV46SZLUX7pL4Or7Oxj1rdZ5i2nL5shFaM/maJ23eOMbypiDUJdOgNLmyNTBjock27v+G569Ex79LTz552RZgkwD7Hgw7P5u2O1dMGp8yZeZOrF5o38Xm9pDF4FsLvKTO+et23fNrBfspZMkSf3KBK7KtUweTWN9hvZsjob6DC2TR2/cKOYgZPo/OKkv1TXAzkckW64DXngAnvwTPPEn+NNnk238PrDbu2GXI2HcWyDT9e99cVJ31JvG9aooSrYjctNjr6x7bi+dJEmqNIdQDgI9zoH7+THJze9pf+j/4KRKixFeezKfzN0IL+Y/P4aNySd8R8JOh8PwMZv0sptTFKWYc+kkSdKmcg5crbv0qKSC34dvSDsSqfLeeBX+eRs8cwv889Zk3hwBxk+BnY6AnQ6D7feD+qZNetm+WLoAXGBckiT1zASu1v3sCBiyBXzot2lHIvWvXA5eehieuTVJ5l54AGJHskTBDvvDpIOTbbupUN+4yS+/ub10mQD1mcChRT10cxcuc+ilJEk1zgRuEOtx+CTAJYfC8LEw/dp+jU0acFYvhfn3wnN3w3N3wstzgQj1Q2HCATDpoCShG79vrxO6vuilA4deSpJUy6xCOUiVtYQAWMREKhi6ZbL8wO7vSp6vej2f0N2VJHV/+3qyv35IksTtsB/scABsvz+MGNvjy3dV7bKrXroAXfbWlVMgxR47SZJqjwlcFStrCQFIhpG5jIC0sWFbwR7HJhvAysUw/254vjUZbnnfj+CeHyTHmndMhl3usH+S1G29Z7LMQQ86J3WdK17+etYLZfXQlVrGoFjnJQ0KiV3nr+3JkySpupnAVbGylhCAZM5PCP0bnFSNho+GPY9PNoD21fDSP+CF+5OE7p+3wSPXJMcahsO4vZPiKOP3gW2nwJhdekzqOid0J+67/boeukKy1Zuhl5177LrivDtJkqqbc+CqVPFcmx7/R/3iA2DsbvD+K/o3SGmwiRGWzk+SuQWzkgIpL8+B9lXJ8eKkbtspyePonZNlPDZRXy1jsCmcdydJ0sCw2XPgQgiHAJ8DpgLjgY/EGC/r4Zy9gf8F9gdeB34KfC0OtIyxCpU9960g1+EcOKkvhADNk5Ltze9P9uU6YNFTsPDhJKFb+DA8dAW0/yQ5XtcIY3ZNhlxusyds/abkcdR23faM9zT0src9dn0x787ETpKk9JQ7hHIEMBe4Ir91K4QwCrgZuBPYD9gd+AWwEvheryLVOr99aAFr23NEepj7VhCdAydVTKYOtt4j2aackuzLdcCip5Phl68+Cq88BvPvgTm/Xn/ekC2SpK6Q2I3dI0n0ho8pmdiVKpBSrLjHrrs5cH0x787ETpKk9JSVwMUYbwRuBAghXFbGKdOBYcBpMcbVwNwQwu7AZ0IIF1VbL9wmDVfso/crvhFbsqpto7LkhQtYV9fN3LeCaA+c1K8ydbD17slWbPUSePVxeOVRePWxJLGbcy3MWr6+zZAtYPQuSTI3Zuf1X2+1Y7eLj/eU4BXb3Hl3m5rYOcdOkqS+U6kiJm8F7sonbwV/Bb4GTAKerdD79rnCcMVCj1d3BQD64utSN1FdDXkKwPumlnFDFHNlVcuTVGFDm2HigclWECMsWwCLnkx67RY9DYufhnm3wT+uXN8uZGDLiUmhlK12Wj+Us3kSNE+EhqFlh9FVsre58+7KqZR58rQdrJIpSdJmqFQCNw5Y0GnfK0XHNkjgQghnAmcCTJgwoUIh9U6hVH/hBiYXoa3Mam99pavkrakhw4n7bt/zC+RcB04asEKALXdItp2P3PDY2hWw+JkNE7tFz8Bz90D7yg3bjty2KKHbcX1it8UOMHJcnyx5sLkFVbIdkZn3P99tG3vxJEnq3oBYRiDGeAlwCSRVKFMOZwOFUv1t7TlydF8AoFI6v2d9XeDkaTuUfyPjQt5SdWoamSxRMH6fDffHCKsWw+vPwpLnirZn4dk74R9Xs8GnRqiDUeNhi+2T4ilbbL/hNmq7pHew09y7rnrq+jqx2+Bbo2/WuzPhkyQNVpVK4F4Gtum0b5uiY1Vj6sRmZs5o6dXCu71VqpR38Y3SJt+QOAdOGlxCSIqdDB8DO+y38fH2NbDshSSpW7Zg/bb8RXhxFjz+e+ho2/CchuGwxXZJb92IcTBym/zjOBixzfrHppGblNgVDw+//anXyGaT/wzrrXLXuytw2KYkabCpVAJ3H/DtEMKQGOOa/L6jgIXAcxV6z4opZ+Hdvvy6z//H2DlwUm1pGJLMlRuzS+njuRysfA2WF5K7F/OPL8AbryQLl7/xCmTXbHxuw7ANE7rC4/AxTB02hqk7j4Fho+EtE6Bp1Aa9esUFoUp99lVivbu+GLbZXZLX0/dU6j/hTCAlSZuj3HXgRgA7559mgAkhhCnA6zHG50MIFwL7xxiPyLe5EjgPuCyE8HVgV+A/gPOrrQJlKZtS7W1AcB04ScUymaSHbeQ2sN3U0m1ihDVLYcUr8MbLpR9fmQvP3AJtb5R+jbrGJJkbNgaGj04SvOFjIDMGdhidHBuyJUxohqFbwtBmjtpzG1qffX2z17vbFD0N24TSSV65CWdPQ+9LvbZDPyVJXQnl5FMhhEOB20ocujzGeHp+aYFDY4yTis7ZG7iYZCHvJcBPgAt6SuCmTZsWZ82aVWb4Ksu3JsKbT4Z3fSftSCQNRm0rYeUiWLUIVi7OPxY/L963GNYu7/q1MvVJUpdP6Dp//cKaJlpfyrGmbiTbbr01jy+BtrrhTBo/jodf6yCXaezzYZtpKB5KbzInSbUnhDA7xjit5LGB1iFmAlcBF+4AU6bDO7+VdiSSBNm1+aRuMaxemvT0rV6SfL16SdfP1yynxzJSdU1J8Zf8toKhLGofAk0jeWVtA2vrhrPFlqOZv7KOtsxQ6ppG8IfHl/FGrpFVDGElTayKQ1hNE6toooPNH36+ucWvOs+LtkCLJA1+3SVwA6IKpSrMOXCSBpL6pqQq5qjxm3ZergPWLMsndEuTZRbWbcvzW9G+NcsZuXYFI+PrsOo5diy0ezXLlKKXPaGh67dsD41kM0NYkm1gVWxiJfnkLiYJ3qo4hDWhiV2234aVuUbaM02M3XIUz6+IZDONbDu6mWXtGYYOG8FTr2fpCI1MGjeaxxa1kQ1NDB0yjEtaX2JNLkMklIyhq8It3VXk7GnenRU7Jal62QNXC74+DvafAUd/Pe1IJCldMSbFWQpJXvsqaFuVzOMrfN2+MhkWuu7rVSxa8jpLly5lWFjL2lVv0JhbxYhMG5nsaobGNdRnV0Guvddh5ciQq2tiLY200cCybD1rYgNraGAtjayNDbRTn9/qaKOBtli/bl9bfmuP65+3F+1royF/Xn5/0esVzs1lGmjZaRu2HDmUXbdt5tGXVxFDHbtvN5o5C1cQQrDoiiT1E3vgal3MJetASVKtCwEahibbiK3LPm1MfutWRzZJDrNrIbs6eWxfvf55+5r88fxWdCzTvoZMdg312TUMz64hLlvOysVLqW9bzdqVbzA8rKGBLI1k1z9msjTSTgMdNJKlKfQ+gVynULDzUTipsG8OnAK0xzqyD9eRpY6O2zOsbGgkSx25UEd9QyNrOgIdoZ7GhkbayZCpa+CNdsiFOoYNGcKytZEY6hg+dChrc4GtRg5j9KjhyQiRTH3ydypTlxTdCpn818X76pICPBvtqytqX7yv8BhK7Cv1HoXX6fQaIeQLgeUfQ+hiX6aLfaG8doT1ry1J3TCBK8frz8LDM9OOovdy7VahlKRKq6uHuhHQNGKzX2qr/AbJUgWdl64pXZEzUk9HUaLXkSR4YX3SV0gAG0LheZIANpClMbRTT456stSTo44OGuigjg7qQ7K/jhz1dCRbR/4x5KhbU9SWTm3DGpYtX04dORroYPXSpO3KVzuob8oQcu1k6KAhRHK5DkLMUR8iMddBJnYQiGSqrgzN5iiVIHZO9LpKJEu1Y8MEsfg9CsN21yWZPR1nM8/v7jh9EF/n4/R8fvG+DX4MpRLpNNuUaFJq50avVcttSujqdQ78NxgxtufzBwgTuHIsewHu+l7aUfReyMDY3dOOQpLUC10tXVMqsevtHLhFK9byxwos0dCjteU2jGSINNVFDt9lNGNHNLDnuBE88dIS6sixxzbDWbZqLVsOqePpV5aRiR3stvVwnnllGYEcu4wdxhur1/Lm8SPZY5vhyciU2JHMq1z3mEu2DfZ1JMNuicljjOvbUfg6dnqeW992o329aVf8npTYV6pdF/HCht9P/tqu21fyOD0c7+n8UsfZ8Hhuc+LrfJxNOL9zLFD0Ip129VWbHnf08r1KtKvKNiWa9Ec8+55WVQmcc+AkSVK3CeGmLrYe6OI+rIJ6es9Azwu2b87X5SbNFouRVA6XEZAkSX1i9vwltM5b3G2y0l0yU24SWG3KTVq7WhbCJE9SMRM4SZI0YJSTBJYa5rnxvL/10uj1q5RykrxN7QG0eqhUXaxCKUmSBoyu5vX1pLfz/vqj168vE8iu1v7bnPcvZwhpb5K8cobebs7X9kZKG7MHTpIkDXq96fXr6zlwPfUipq038wR/PeuFin4/3fVG9mbB+k35edpjqTQ5hFKSJGkA6KnHqrdJ3kAsHFPN799VMltIGk3wVGkOoZQkSRoAyhk+2pthiWkMIU27C6CS7x+BbC7ykzvnbbC/kDRWuqrp5lY7tQdycLMHTpIkaZDraQhpb5K8TID6TODQTSy4YuGa3uuv77k4QR05tGGTk0bnLm4+h1BKkiSpW5s6T7A/emn6csH6cr/uLpk1aSxPbyqpptnrOBATThM4SZIkqUxdJbNLVrWxYnV7amsZmkBWRmN9hqvOaBlQSZxz4CRJkqQy9TRX8ag3jatoVdM0e6M690CmnTT2x3u3Z3O0zls8oBK47pjASZIkSZugt2sZVoviBHVTk8a+Xi6jPxLIhvoMLZNHV/hd+o4JnCRJkqR1NjdB7csF3mt1Dlx3TOAkSZIk9ZnB3kOZtkzaAUiSJEmSymMCJ0mSJElVwgROkiRJkqqECZwkSZIkVQkTOEmSJEmqEiZwkiRJklQlTOAkSZIkqUqYwEmSJElSlTCBkyRJkqQqEWKMacewgRDCa8D8tOMoYQywKO0gapjXPz1e+/R47dPjtU+P1z49Xvv0eO3TM1Cv/cQY49hSBwZcAjdQhRBmxRinpR1HrfL6p8drnx6vfXq89unx2qfHa58er316qvHaO4RSkiRJkqqECZwkSZIkVQkTuPJdknYANc7rnx6vfXq89unx2qfHa58er316vPbpqbpr7xw4SZIkSaoS9sBJkiRJUpUwgZMkSZKkKmEClxdC+EQI4dkQwpoQwuwQwsE9tH97vt2aEMK8EMJZ/RXrYBFC+FII4cEQwvIQwmshhD+EEPbq4ZxJIYRYYjumv+IeLEIIXy1xHV/u4Zy9Qwh3hBBWhxBeDCGcG0II/RXzYBFCeK6L3+M/dXNOqfZ+7vQghHBICOH3+d/XGEI4vdPxkP+3sDD/e317COFNZbzuiSGEx0IIa/OP763YN1Glurv2IYSGEMK3QwiPhBBWhhBeCiFcGUKY0MNrHtrFv4XdK/4NVZEyfu8vK3ENW8t4Xe99elDGtS/1+xtDCBd385re+5ShnPvKwfKZbwIHhBBOBn4AfBPYB7gX+HNXf0hCCDsCN+bb7QNcCPwwhHBi/0Q8aBwK/Ag4EDgcyAK3hBC2KuPcY4Bti7a/VSjGwe5JNryOe3fVMIQwCrgZeAXYD/gU8HngM5UPc9DZjw2v+75ABH7dw3lndDrv8grGOFiMAOaS/L6uLnH8C8BngXNIfi6vAjeHEEZ29YIhhLcC1wAzgSn5x2tDCAf0aeTVr7trP4zk9/4b+cfjgR2Av4QQ6st47Tex4b+Fp/so5sGip997gFvY8Bq+q7sX9N6nbD1d+207bcfl9/f0+Q/e+/TkUHq+rxwcn/kxxprfgPuBn3Xa9zRwYRftvw083WnfpcB9aX8v1byRfOh1AMd102YSyY3utLTjrfYN+CowdxPafxxYDgwt2vdfwIvkCyK59fpn8WVgafG1LdEmAu9LO9Zq3oA3gNOLngfgJeDLRfuGAiuAj3XzOtcAN3fadwtwVdrf40DdOl/7Ltrsmf8937ubNofm24xJ+3uqlq3UtQcuA/64ia/jvU8fXPsSbX4GPNlDG+99enf9N7ivHEyf+TXfAxdCaASmAjd1OnQTSQZfyltLtP8rMC2E0NC3EdaUkSS9wkvKaPvbEMKrIYR7Qgjvq3Bcg9nk/DCCZ0MIV4cQJnfT9q3AXTHG4v9R/CswnuSPi3ohhBCAjwK/6nRtS/lBCGFRfojIWSGEmv8M30w7AuMo+jzP/wzupOvPf+j6b0B356hno/KP5fwNmJUfdnlrCOGwSgY1iB2U/zv6VAjhZyGErXto771PHwshjAA+QJLElcN7n03T+b5y0Hzm+8cfxgB1JMPCir1C8kMuZVwX7evzr6fe+QHwMHBfN23eAD4HvJ9kuMetwDUhhA9WPLrB537gdJIhGWeQ/F7fG0IY3UX7rn7vC8fUO0eR/FHp6Q/4ucDJwJHA1cD3gP+sbGiDXuH3dlM+/wvnbeo56kb+P1O/B/whxrigm6YvkYwGOBE4gWQY+K2hh3nr2shfgA8DR5AMJ9sf+FsIoambc7z36XunAo30PBzee5/e6XxfOWg+88sZZy5VXAjhIuAg4KAYY0dX7WKMi0j+yBfMCiGMIRnT/KvKRjm4xBj/XPw8P4F9HnAacFEqQdWmM4AHY4z/6K5RjPFrRU8fDiHUkQy9/Holg5MqLT/n7VfAlsB7umsbY3ySJGkruC+EMIlkPu5dFQpx0IkxXl30dE4IYTYwH3g38Nt0oqpJZwA3xBhf666R9z6brtz7ymplDxwsIhkfu02n/dsAXVXke7mL9tn862kThBD+BzgFODzGOK8XL3E/sEvfRlV7YoxvAI/S9bXs6ve+cEybKD9k6XjKHz5T7H5gVAih889E5Sv83m7K53/hvE09RyXkk7ergDcDR8QYF/fiZfwbsJlijAuBBXR/Hb336UMhhCnANHr3+Q/+3nepm/vKQfOZX/MJXIyxDZhNMoyp2FEklZZKua+L9rNijO19G+HgFkL4Aev/kT3Ry5eZQjKsRpshhDAE2J2ur+V9wMH5dgVHAQuB5yob3aB1OrCW5AZ2U00B1pAUP1HvPEvyB3jd53n+9/tguv78h67/BnR3jjrJz5u6hiR5OyzG2NuboSn4N2Cz5HtztqP76+i9T986k+Qz6JZenj8Ff+830sN95aD5zHcIZeIi4JchhAeAe4CzSAoz/AQghHAFQIzxw/n2PwE+GUL4PvBT4G0kN2Kn9GvUVS6/5smHgH8BloQQCmOJ38j3BhFCuBDYP8Z4RP75aUA78HcgR1J+92zgi/0bffULIXwX+APwPLA18BVgOPmx+J2vPXAlcB5wWQjh68CuwH8A58d8SSaVL1+8ZAZwdeH3vejYJ4FPxhh3zz8/jmSs/X0kZakPAy4ALokxru3XwKtMvkjAzvmnGWBC/n++X48xPp//HP/PEMITwFMklVXfIPl9L7zGrcADMcYv5Xf9ALgzhPAfwPXAe0l+JgdV/BuqIt1de5L/+LmWpIz3cUAs+huwrFDQp/Pf3xDCp0n+w+hRkrlDHyT5G2Ip+yI9XPvXSaoQX0eSAEwiWRLgVeB3Ra/hvU8v9PSZk28zDJgOfKfU30/vfXqnp/vKGGMcNJ/5aZf4HCgb8AmSPwprSXrkDik6djtwe6f2bwceyrd/Fjgr7e+h2jaSkriltq8WtbkMeK7o+WnAY8BKkpL2s4APpv29VONGUghjIdBGshTAdcCeXV37/L69Sao1rSH5w38eLiHQ2+t/WP73ff8Sx76afDyve34MyR/uFfnf/TkkawzVp/19DPSN9WXnO2+X5Y+H/PV+Kf97fQewV6fXeK7Qvmjf+4An8v9+HgdOSPt7HWhbd9ee9WXRS22nF73GBn9/Seb8PE3yHxmvk8x7e1fa3+tA23q49kNJKui9mv/9nZ/fv0On19jg2uf3ee+zGde+qM1HSIaeju/iNTb4+4v3PuVe+3LuKwfFZ37IByVJkiRJGuBqfg6cJEmSJFULEzhJkiRJqhImcJIkSZJUJUzgJEmSJKlKmMBJkiRJUpUwgZMkSZKkKmECJ0mSJElVwgROkiRJkqqECZwkSZIkVYn/D4osemnES7CaAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit = function_gamma(x, *params)\n",
    "\n",
    "plt.plot(x, signal, '.')\n",
    "plt.plot(x, fit, '-')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.9.7 64-bit",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  },
  "vscode": {
   "interpreter": {
    "hash": "11938c6bc6919ae2720b4d5011047913343b08a43b18698fd82dedb0d4417594"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
